javascript .push()似乎不起作用

时间:2010-05-09 02:39:48

标签: javascript arrays

我正在尝试使用.push将项目放入javascript数组中。我创建了一段简化的代码。当我点击id为clickButton的按钮时,我希望得到一系列带数字的警报,但我什么都没得到。

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

4 个答案:

答案 0 :(得分:3)

Works对我来说。您可能在页面的其他位置有错误。

答案 1 :(得分:1)

这是帮助您引用jquery库的url。 http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js

答案 2 :(得分: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>

但是,考虑到你的能力水平,我建议你更简单,只需直接在按钮上添加一个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

答案 3 :(得分:-1)

在document.ready函数的范围之外声明myArray。例如:

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