我正在尝试使用.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>
答案 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>
答案 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>