2010-05-09 6 views
0

.push를 사용하여 항목을 자바 스크립트 배열에 넣으려고합니다. 간단한 코드를 만들었습니다. id clickButton이있는 버튼을 클릭하면 숫자가 포함 된 일련의 경고가 표시 될 것으로 예상되지만 아무 것도 얻지 못합니다.javascript .push()가 작동하지 않는 것 같습니다.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Sempedia | Making computers think about data the way we do</title> 
<link href="css/styles.css" rel="stylesheet" type="text/css" /> 
<script type="text/javascript" src="js/jquery.js"></script> 
<script> 
    $(document).ready(function() { 
    var myArray = new Array(); //declare the array 

    for(var i=0;i<=10;i++){ // create a loop 
     myArray.push(i); // add an item to array 
    } 

    $("#clickButton").live('click',function() { //register the button being clicked 
    for(var j=0;j<=10;j++){ //for loop 
     alert(myArray[j]); //alert one item in the array 
     } 
    }); 

}); 
</script> 
</head> 
<body> 
<input type="button" value="click me" id="clickButton" /> 
</body> 
</html> 
+1

, jQuery를 실제로 포함되고 있는지 확인 ... 당신은 문제가 프로그래밍을 할 때 당신은 항상 가장 먼저해야 할 단계 – CMS

+1

하나는 오류 검사입니다 메시지. – goat

+0

'new Array()'대신'[]'를 사용하여 빈 배열을 생성 할 수 있습니다. – gnarf

답변

3

Works 페이지의 다른 부분에서 오류가 발생했을 수 있습니다.

+1

CMS가 지적했듯이 jquery가 포함되지 않은 문제가있었습니다. – Ankur

-1

myArray를 document.ready 기능의 범위 밖에 선언하십시오. 예 :

<script> 
    var myArray = new Array(); //declare the array 
    $(document).ready(function() { 

    for(var i=0;i<=10;i++){ // create a loop 
     myArray.push(i); // add an item to array 
    } 

    $("#clickButton").live('click',function() { //register the button being clicked 
    for(var j=0;j<=10;j++){ //for loop 
     alert(myArray[j]); //alert one item in the array 
     } 
    }); 

}); 
</script> 
+2

차이는 없습니다. – SLaks

+0

이것이 기술적으로 정확하다고 확신했기 때문에 myArray는 포스터 코드를 사용하여 문서 준비가 아닌 다른 곳에서는 유용하지 않을 것이라고 확신합니다. 그 대답이 결과로서 downvote의 가치가 있는지 확실하지 않습니다. – BradBrening

+1

틀렸어. 식별자 myArray가 콜백 함수의 범위 내에 있습니다. – Garrett

0

를 사용하여 유효한 HTML, 참조 http://validator.w3.org/

같은 "//for loop" 쓸모없는 주석을 포함하지 마십시오

; 누군가가 for 루프를 인식하지 못한다면, 그 주석은 확실히 도움이되지 않을 것입니다. 그러한 의견은 누구에게도 도움이되지 않습니다.

link 태그와 같이 문제와 무관 한 모든 것을 단순화하고 제거하는 것이 중요합니다. 이렇게하면 코드가하는 일을보다 명확하게 알 수 있습니다.

jQuery를 사용하면서 무엇을하고 있는지 이해하는 방법을 배우십시오.

jQuery의 사용이 지난 2 년 동안 크게 증가했습니다. 그것은 현재 모든 종류의 일에 고용되어 있습니다. jQuery 없이는 성취하기가 쉽지 않지만 사실 jQuery 없이는 성취하기가 더 쉽다. 이것은 종종 관련 기술에 대한 기본적인 이해가 필요한 이유를 알 필요가있을 때 코드가 원하는 것을하지 못한다는 불만을 동반합니다.

문제가 생겼습니다. 당신은 그것이 일하기를 원하고 그것은하지 않습니다 [1].

해결해야 할 문제는 이벤트 처리기를 시작하는 것입니다. jQuery live으로 시도한 것과 같은 위임 전략이 필요한 경우 대상을 검사하고 그에 따라 처리하는 문서에 클릭 콜백을 추가하여 위임 전략을 수행 할 수 있습니다.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
     "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<title>Me | Trying to make you think</title> 
<script type="text/javascript"> 
(function(){ 
    var myArray = [1,2,3]; 

    document.onclick = function(ev) { 
     var target = getTarget(ev); 
     if (target && target.id == "clickButton") { 
      handleClickButtonClicked(); 
     } 
    }; 

    function handleClickButtonClicked() { 
     alert(myArray); 
    } 

    function getTarget(ev) { 
     ev = ev || window.event; 
     return ev ? ev.target || ev.srcElement : null; 
    } 
})(); 
</script> 
</head> 
<body> 
<p><input type="button" value="click me" id="clickButton"></p> 
</body> 
</html> 

그러나 귀하의 능력에 비추어 볼 때, 저는 더 간단하고 버튼에 직접 onclick 이벤트 처리기를 추가하는 것이 좋습니다.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
     "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<title>Me | Trying to make you think</title> 
<script type="text/javascript"> 
    var myArray = [1,2,3]; 
</script> 
</head> 
<body> 
<p><input type="button" value="click me" onclick="alert(myArray)" id="clickButton"></p> 
</body> 
</html> 

[1] http://jibbering.com/faq/notes/posting/#ps1DontWork 코드가 잘 보이는

관련 문제