js 반복문 선택자 지정 방법?

js 반복문 선택자 지정 방법?

QA

js 반복문 선택자 지정 방법?

본문

<script>
for(i=1;i<=set_number;i++){
    r=Math.floor(Math.random()*1024%16)*16;
    g=Math.floor(Math.random()*1024%16)*16;
    b=Math.floor(Math.random()*1024%16)*16;
    document.write("<tr class='body'><td class='track'><img src='./img/block.gif' id=bar["+i+"] width=1 height=1><img src='./img/snail3.gif' class='pic'> <span id=c["+i+"]></span></td><td class='speed'><input type=text name=m["+i+"] size=3 value=0 readonly></td><td class='rank'><input type=text name=r["+i+"] size=1 value=0 readonly><span>등</span></td><td class='point'><input type=text name=race["+i+"] onKeyPress='onlyNumber()' maxlength='4' size='5' value='0'></td></tr>");
}
</script>

 

이런 식으로 JS 반복문을 통해 i 값이 증가하는 구문이 있을 경우,

저 굵은색 부분의 input 창을 클릭해서 포커스 상태면 기본값 0이 안 보이게 하려는데,

아래 구문 어디가 잘못 되었을까요?

 


$(document).ready(function(){
    $('name = race['+i+']').focus( function() {
        $(this).val();
    });
});

 

 

이 질문에 댓글 쓰기 :

답변 6

선택자에 변수를 넣으셨는데 i값이 없으니 찾을 수 없는겁니다.

document.write할때 input에 class값을 주고

jquery focus할때 선택자를 해당 class명으로 해보세요.

페이지가 다 로딩되기전에 

먼저 수행된게 아닐까요?

위의

ready 영역을

tail.php 쯤으로 이동시켜서

나중에 실행되게 해보세요

 

그리고, i값은 어디서 넘겨받나요?

 

ready 함수에서는 받는데가 없는거 같은데

 

ready가 애매해면 조금 구식이라도

 

body onload="functionCall();" 식으로 만들어서

 

ready 영역을

function functionCall() {

   // 여기에 넣어보심도 

}

 

테스트할만할듯 싶습니다.

 

계속궁금한건 i 는 어디서 나타났는가 입니다.

<input type=text name=race["+i+"] class='race' onKeyPress='onlyNumber()' maxlength='4' size='5' value='0'>

 

위 처럼 클래스 추가해 주시고 아랫 부분은 val("")로 처리하시고 시도해 보시죠.

 

$(document).ready(function(){
    $('.race').focus( function() {
        $(this).val("");
    });
});

동적으로 추가된 구문에는 해당이벤트가 동작 안되는걸로 알고있습니다

$(document).on("focus",'name = race['+i+']',function(){

 

이런식으로 등록하셔야 동작합니다

 

i값은 포문으로 돌리시면 될 듯 하네요

도움 주신 모든 분들 감사합니다. ^^

휴그란트 님 힌트 보고 해결하고 왔더니, 

평정심 님이 좀 더 구체적으로 힌트를 주셨네요. ^^;;

 

 

해당 요소에 class='bp' 주고, 아래쪽에 아래 코드  넣었더니, 잘 되네요.

 


    $('.bp').on('click focusin', function() {
            this.value = '';
    });
    $('.bp').on('focusout', function() {
        if(this.value == 0 || this.value == '') {
            this.value = 0;
        }
    });
답변을 작성하시기 전에 로그인 해주세요.
전체 43
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT