我想创建一个类,它创建一个添加了一些属性的元素。 到目前为止,这是我的代码:
function CreateItem(n,u) {
this=document.createElement('li');
this.classList.add('ui-state-default');
this.setAttribute('value',u);
this.innerHTML=n;
}
它不起作用。我一直收到错误:
ReferenceError
arguments: Array[0]
message: "_"
stack: "_"
type: "invalid_lhs_in_assignment"
__proto__: Error
我想要的是返回这样的li
元素:
<li value="u">n</li>
如果这对我的使用有帮助:
Google Chrome: 13.0.782.1 (Official Build 87465) dev
OS: Linux
WebKit: 535.1 (trunk@87771)
JavaScript: V8 3.4.0.1
Flash: 10.3 r181
User Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.1 Safari/535.1
使用Chrome开发工具进行调试
答案 0 :(得分:4)
我想你不能写“这个” 但这会奏效:
function CreateItem(n,u) {
var el =document.createElement('li');
el.classList.add('ui-state-default');
el.setAttribute('value',u);
el.innerHTML=n;
return el;
}
答案 1 :(得分:2)
我想创建一个创建一个类的类 添加了一些属性的元素 它。到目前为止这是我的代码 看起来像:
Javascript没有类,您尝试编写的是函数。
> function CreateItem(n,u) {
按照惯例,以大写字母开头的函数名称是构造函数,应该使用 new 调用。您没有显示如何调用该函数,但我希望它与 new 。
> this=document.createElement('li');
您无法为 this 分配值(因此错误消息显示为invalid_lhs_in_assignment
)的原因),在输入执行上下文时设置该值并且无法更改。
> this.classList.add('ui-state-default');
即使你可以分配给 this ,li元素也没有 classList 方法。
> this.setAttribute('value',u);
使用 setAttribute 的原因很少,只需设置DOM属性就好了:
el.value = u;
该功能可以按照Arend(或多或少)的建议。
答案 2 :(得分:0)
鉴于此语法,'this'关键字可能指的是全局'window'对象。如果使用'new'关键字调用该函数,则该函数将被调用为构造函数,并且您正在尝试覆盖它正在尝试构造的对象。试试这个问题:
function CreateItem(n,u) {
var li=document.createElement('li');
li.classList.add('ui-state-default');
li.setAttribute('value',u);
li.innerHTML=n;
return li;
}