【发布时间】:2011-10-03 02:58:36
【问题描述】:
我有一个功能,当单击一个元素时,它会使该元素成为对象中的选定元素。让我给你看看。
var elem = new Object();
elem = {
title:'',//string
num:null,//number
selected:null
}
function selected(elem){
elem.title = elem.getAttribute("title") || this['title'];
alert(elem.title);
for(x=0;x<classIds.length;x++){
if(elem.title==classIds[x].name){
elem.num=x;
elem.selected=classIds[x];
alert(elem.selected.properties);
}
}
}
所以当一个元素被点击时,被选择的函数从元素上的一个 onlick 属性运行。这很酷。它工作正常。但是,如果您再次单击它,浏览器会给出错误 Object is not a function。仅当您连续单击同一元素时才会发生这种情况。如果您单击另一个元素,则不会发生。这很奇怪,因为该函数应该单独运行并覆盖 Object elem(在函数外部定义为全局变量/对象)。由于调试原因,我有警报。此外,数组 classIds 也是在函数之外定义的。任何见解都会很棒。另外,我知道我的编码有点奇怪,我真的只是从 JavaScript 中的对象和方法开始。
编辑
Onclick 在下面这样调用
<li title="+classIds[x].name+" onclick='selected(this)'>"+classIds[x].name+"</li>
所以...
onclick='selected(this)'
是来电
【问题讨论】:
-
请告诉我们您如何称呼
selected()。问题可能出在传递给该函数的参数上。 -
不是您的实际问题,但是如果您立即将 elem 分配给下一行的另一个对象,那么将它初始化为一个新对象是没有意义的。
-
能显示classIds的结构和html部分代码吗?
-
好的,我已经改了代码来显示调用
标签: javascript dom object methods web