• 목록
  • 아래로
  • 위로
  • 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 마스터 24.06.20.15:22 504
공지 [작업 완료] 설 명절 맞이 서버 업데이트 안내 3 마스터 24.02.11.17:21 2534
공지 [중요] 호스팅 만료와 관련하여 일부 수칙이 변경됩니다. 4 마스터 23.01.14.02:23 6224
공지 [필독] 질문하는 방법 17 마스터 18.02.23.03:09 4632
466 네이비즘에서 측정한 스포어 서버시간의 오차 관련 질문 드립니다 (서버시간 측정 관련) 4 image 이니스프리 18.11.14.20:21 2485
465 라이믹스 도와주세요! 1 image Nginx 18.11.14.15:15 196
464 웹 개발 언어를 만들어보려고 합니다 1 260578 18.11.13.23:11 168
463 커뮤니티 사이트를 제작해보려고 합니다 3 ndbdbbn 18.11.11.20:51 352
462 Amazon Route 53 DNS 셋팅관련 7 image 갱생협스 18.11.11.08:56 230
461 미디어위키 flow확장기능 오류가 발생했습니다. 1 AA 18.11.10.18:40 171
460 안녕하세요!!!.. 왕초보 웹사이트 제작 관련 질문 드립니다. 8 image 그냥왕초보일.. 18.11.09.10:16 240
459 컴퓨터가 안꺼져요 11 국내산라이츄 18.11.08.04:15 911
458 우분투의 crontab을 관리하는 노하우나 툴이 있을까요? 14 이니스프리 18.11.07.00:27 269
457 계산기를 만드는데 문제가! 6 studyHTML 18.11.06.23:06 215
456 국제전자센터에서 스마트폰 구입 괜찮을까요? 2 이니스프리 18.11.05.20:42 1778
455 구매한 아이콘 없애는법 아시는분? 2 슬기 18.10.29.10:33 197
454 네이버 웹마스터도구에 대해서 질문이 있습니다. 8 image MYIG 18.10.28.17:33 197
453 https 에서 http 불러올수있는 방법이 뭐가있을까요? 8 슬기 18.10.28.01:20 247
452 문제가 무엇인가요? 1 260578 18.10.28.00:11 167
451 나무위키같은 각주를 구현하는 방법을 찾습니다. 1 image 260578 18.10.27.19:03 333
450 개인정보 보호 오류 무엇...ㅠㅠ 10 image 국내산라이츄 18.10.27.00:12 355
449 질문 드린 CSV 파일 업로드에 대한 코드를 작성했어요 ^^ 실사용 전에 보안상 취약점 등 문제는 없는지 여쭤봅니다 2 이니스프리 18.10.26.20:57 211
448 미디어위키 update.php 실행법 3 관종 18.10.25.21:06 209
447 다른 서버에 있는 CSV 파일을 불러오는 방법에 대해 여쭤봅니다 ^^ 9 image 이니스프리 18.10.24.18:02 312