从另一个类创建类

时间:2011-06-05 23:56:02

标签: javascript class

我想创建一个类,它创建一个添加了一些属性的元素。 到目前为止,这是我的代码:

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开发工具进行调试

3 个答案:

答案 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;
}