• 목록
  • 아래로
  • 위로
  • 2
  • Hanam09
  • 조회 수 283
<div id="Error">
<div hc-element="block"></div>
<img width="150px" hc-float="center" src="img/Warning.svg.png">
<center>
<h2>Oops, Access to this page has been denied!</h2>
<button hc-event="back" hc-float="center">back</button>
</center>
<div hc-element="block"></div>
</div>


문제가 되는 웹: gift.ihnkyou.gq

소스보기: view-source:gift.ihnkyou.gq

해당파일 : htmlctr.js

버튼이 작동하지 않습니다. 문제가 있는거 같은데 찾지는 못하겠습니다. 

무엇이 문제인지 알려주실 수 있습니까?

저기 위에건 html 소스라서 못읽습니다. 

이 문제를 해결하기 위하여 제가 어떻게 하여야 할까요?

작성자
Hanam09 36 Lv. (50%) 106610/109520EXP

 

안녕!

 

댓글 2

네모
profile image

Inv['plugin']['event'] 에 정의된 함수에 문제가 있습니다.

 

for(var i = 0; i < Inv.getElements('event').length; i++){

    Inv.getElements('event')[i].onclick = function() {

        if(Inv.getValue("event", i) === "refresh")

            location.reload();

    }

}

 

 

여기서 Element.onclick 함수 안에서 i 변수를 사용하셨는데,

반복문에서 사용되는 반복카운터는 함수 안에서 사용하시면 안됩니다.

 

저 i 값은 클로져 변수라 for 블럭 안에서만 사용되는 것은 맞으나, 그것이 반복할 때마다 새롭게 생성되는건 아닙니다.

이전에 실행되었던 반복코드에서도 i 값에 접근한다면, 돌아오는 값은 지금까지 진행된 카운트 수가 됩니다.

예를 들어, for(i = 0 to 10) { setTimeout( { alert(i) }, 1000); } 이라는 의사코드를 실행한다면,

출력되는 값은 어지간한 조선컴퓨터가 아닌 이상 10 이라는 숫자가 10회 출력된다는 것이죠.

 

 

하남님이 원하시는(또는 그렇게 추정되는) 방식으로 구현하려면,

저 i 값을 보존하는 변수를 하나 더 만들어서, 그 변수를 i 대신 사용해야겠죠.

 

for(var i = 0; i < Inv.getElements('event').length; i++){

    var ti = i;

    Inv.getElements('event')[ti].onclick = function() {

        if(Inv.getValue("event", ti) === "refresh")

            location.reload();

    }

}

 

같은 느낌으로요.

 

솔직히, 제가 생각하기에는 그리 이상적인 방법은 아니라고 생각합니다.

요즘 PC에서는 웬만해선 부담되지 않겠지만, 그래도 많은 Element 들이 생긴다면, 부담이 될겁니다.

해당 Attribute 가 있는 개수만큼 변수를 생성해버릴테니까요.

 

저라면 getValue 에서 사용 가능한 파라미터 종류를 하나 더 만들듯 싶네요.

파라미터의 타입이 Element 라면, getElement를 거치지 않고, 바로 파라미터에서 Attribute를 가져오는 식으로요.

comment menu
2018.01.09. 01:23

신고

"네모님의 댓글"

이 댓글을 신고 하시겠습니까?

Hanam09 작성자 → 네모
profile image

오!!!! 정성스러운 답변 정말로 감사합니다^^!!

네모님 덕분에 문제를 알 수 있었습니다! 

복많이 받으세요!!

comment menu
2018.01.09. 15:47

신고

"Hanam09님의 댓글"

이 댓글을 신고 하시겠습니까?

권한이 없습니다.
번호 제목 글쓴이 날짜 조회 수
공지 [1차 해결 및 추가] 서버 접속 불가 문제 안내 12 마스터 6일 전15:22 203
공지 [작업 완료] 설 명절 맞이 서버 업데이트 안내 3 마스터 24.02.11.17:21 2260
공지 [중요] 호스팅 만료와 관련하여 일부 수칙이 변경됩니다. 4 마스터 23.01.14.02:23 5943
공지 [필독] 질문하는 방법 17 마스터 18.02.23.03:09 4579
666 크롬 즐겨찾기를 잘 관리하는 팁이 있을까요? 5 이니스프리 18.09.19.18:55 391
665 제가 도메인 연결 제대로 한건지.. 1 Ursus 16.08.28.23:50 391
664 도메인 설정 도와주세요!!! 3 alstn 17.07.30.20:46 389
663 컴퓨터 전문가님들 봐주세요~~원격프로그램에 대해서입니다 9 매매의신 20.02.12.09:05 388
662 브라우저와 기본응용프로그램과의 양방향 통신에 대하여 6 Hanam09 18.12.16.17:49 384
661 동영상 스트리밍을 해주는 모듈설치...? 8 비빅 16.10.12.13:13 384
660 이미 도메인 명이 다른 곳에서 도메인(서브/별칭) 도메인으로 사용중입니다. 이건 무슨 오류인가요? 1 image rickroot 24.01.27.16:19 382
659 studyforus 커뮤니티 브라우저 호환문제?! 으음.. 3 image 포비 16.09.10.08:23 381
658 호스팅 연장할때도 포인트가 필요한가요? 9 국내산라이츄 17.07.22.23:45 380
657 머신러닝 용도로 노트북을 구매하려고 하는데 MSI 게이밍 노트북도 괜찮을까요? 12 이니스프리 21.01.31.22:26 379
656 그누보드5 는 php 몇버전이 적당한가요? 4 핫슈 20.09.20.08:20 379
655 네임서버 설치 6 루니 17.08.26.01:17 379
654 Youtube Music Engine 외부차트 가져오기 7 title: 에그joyful 18.05.27.19:48 377
653 타겟 질문.. 도다님께 미디어위키 관련 질문이 있는데요 4 마카롱 17.06.24.00:21 377
652 갑자기 소유한 모든 Freenom 도메인이 작동을 안하네요. 6 Yell 21.04.29.09:55 375
651 리눅스에서.. 무선랜카드 활성화?켜기? 3 홀민 19.09.10.02:26 374
650 이거 저작권 침해인가요? (사람에 따라 혐짤 주의) 11 image 물여우 17.07.18.21:41 374
649 도메인 연장이 고민입니다. 3 260578 18.01.20.12:03 372
648 저의 주소는 어떻게 되는지요. 7 gobiyah 16.10.30.18:06 372
647 ICANN 인증 도메인 등록기관과 리셀러 간에 차이가 큰 가요? 5 이니스프리 17.02.05.21:52 371