2012-06-12 74 views

回答

9

设置id的元素不是返回的元素。它实际上返回"myDiv",所以变量a设置为"myDiv"而不是div本身。

+0

但'.createElement();'返回一个元素,为什么我不能从那里操纵它? – 0x499602D2

+2

@大卫:因为你已经拥有了。你已经提到了它的'.id'属性。所以'var a = document.createElement('div')。id =“myDiv”;'创建一个元素,设置它的'id',返回字符串''myDiv''存储在'a'变量中,并立即使该元素可用于垃圾回收,因为没有任何引用具有突出的引用。既然你没有提及它,你什么都不能做,或者用它来做任何事情。 –

0

第二个不起作用,因为您正在创建元素,但立即对其执行操作。而将a变量设置为字符串“myDiv”。

0

foo = 'bar'作为一个声明实际上返回一个值,它是'bar'

a = document.createElement('div'); //this sets `a` to DOM Node 

a = document.createElement('div').id = 'myDiv'; //this sets `a` to 'myDiv' 
//it's the same as 
document.createElement('div').id = 'myDiv'; 
a = 'myDiv'; 

永远不要做这个

如果你想同时设置ID和一个行a变量,你可以使用括号:

(a = document.createElement('div')).id = 'myDiv'; 

这是因为a = document.createElement('div')回调新创建的DOM节点。

2

第二个不起作用,因为createElement的“返回”值用于设置id。因为这是一个赋值而不是链接,它不会将对新元素的引用返回到“a”,从而失败。

0

如果你真的想要一个短的路,你可以这样写:

(window.a=document.createElement('div')).id="myDiv"; 

小提琴:http://jsfiddle.net/F23cD/

+0

但是'a'是一个全局变量,代码的可读性要差得多。我建议在两行上发言;更正确,更可读。 –

0

在你把型“格”的创建的元素到变量“a”的第一条语句,然后将“a”的元素属性“id”设置为“myDiv”。那么“a”现在是元素。

在第二条语句你:

  1. 创造型 “格” 的元素:使用document.createElement( 'DIV')
  2. 设置元素属性 “ID” 为 “myDiv” 和
  3. 将“a”设置为“myDiv”也

然后,“a”现在是“myDiv”而不是元素。

相关问题