我正在使用jQuery库,并尝试将项目推送到数组:
< onclick ="setFacet('myarray','val');">AOC
var myarray = [];
function setFacet(arr, bb) {
for (var i=0; i< arr.length; i++)
if (arr[i] == bb)
return true;
arr.push(bb);
return false;
}
我在chrome中得到了这个:
对象myarray没有方法'push'
答案 0 :(得分:4)
哦,我想我发现了这个问题。在onclick
中,您使用两个字符串调用该函数。第一个参数应该是数组而不是'myarray'
。
如果您只是删除引号(如果myArray
在全局范围内),它应该可以工作。也就是说,看起来像这样:
onclick="setFacet(myArray, 'val')"
答案 1 :(得分:2)
更改:强>
onclick="setFacet('myarray','val')"
要强>
onclick="setFacet(myarray)"
然后将函数setFacet
更改为以下内容:
function setFacet(arr, bb) {
for (var i=0; i< arr.length; i++)
if (arr[i] == bb) return true;
arr.push(this.innerHTML); /* "this" in the context of the "click" */
/* is the element clicked */
return false;
}
答案 2 :(得分:1)
具有onclick侦听器的元素应为
<...onclick ="setFacet(myarray,'val');">
不应引用myarray,否则将被视为字符串。
答案 3 :(得分:0)
您可以将您的javascript与标记完全分开,只将该值存储为被点击元素(或任何其他元素)的属性
<input type="button" value="someValue">
<script>
$(function(){
var myArray = [];
$('#myEle').click(function(){
myArray.push($(this).val())
})
})
</script>