2010-05-09 54 views
0

我想使用.push將項目放入一個javascript數組中。我創建了一段簡單的代碼。當我點擊帶有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 2010-05-09 02:46:26

+1

之一第一步,當你有一個編程問題你應該總是做的是檢查錯誤消息。 – goat 2010-05-09 02:46:30

+0

您可以使用'[]'來創建一個空數組,而不是'new Array()'。 – gnarf 2010-05-09 07:57:13

回答

3

Works對我來說。您可能在頁面的其他位置出現錯誤。

+1

由於CMS指出這是jquery沒有包含的問題。 – Ankur 2010-05-09 02:56:50

-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 2010-05-09 02:44:41

+0

由於我確信這在技術上是正確的,myArray肯定不會在其他任何地方使用,除非文檔準備好使用海報代碼。不知道這個答案是否值得下結果。 – BradBrening 2010-05-09 03:01:22

+1

你錯了;標識符myArray位於回調函數的範圍內。 – Garrett 2010-05-09 06:58:10

0

使用有效的HTML,見http://validator.w3.org/

不包括無用的意見,如"//for loop";如果有人不承認for循環,那麼評論當然不會有太大的幫助。這些評論都不會對任何人有任何幫助。

重要的是簡化和刪除與問題無關的所有內容,例如link標記。這將有助於使代碼在做什麼更清晰。

當你在這裏,放棄jQuery,並學習理解你在做什麼。

在過去的兩年中,jQuery的使用急劇增加。它現在被用於各種事情;不僅僅是沒有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> 

但是,考慮到您的能力水平,我會建議更簡單,只需將按鈕直接添加到按鈕即可。

<!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