var a = document.createElement('div');
a.id = "myDiv";
var a = document.createElement('div').id = "myDiv";
它们之间有什么区别,使得第一个作品,第二个不?
var a = document.createElement('div');
a.id = "myDiv";
var a = document.createElement('div').id = "myDiv";
它们之间有什么区别,使得第一个作品,第二个不?
设置id
的元素不是返回的元素。它实际上返回"myDiv"
,所以变量a
设置为"myDiv"
而不是div本身。
第二个不起作用,因为您正在创建元素,但立即对其执行操作。而将a
变量设置为字符串“myDiv”。
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节点。
第二个不起作用,因为createElement的“返回”值用于设置id。因为这是一个赋值而不是链接,它不会将对新元素的引用返回到“a”,从而失败。
如果你真的想要一个短的路,你可以这样写:
(window.a=document.createElement('div')).id="myDiv";
但是'a'是一个全局变量,代码的可读性要差得多。我建议在两行上发言;更正确,更可读。 –
在你把型“格”的创建的元素到变量“a”的第一条语句,然后将“a”的元素属性“id”设置为“myDiv”。那么“a”现在是元素。
在第二条语句你:
然后,“a”现在是“myDiv”而不是元素。
但'.createElement();'返回一个元素,为什么我不能从那里操纵它? – 0x499602D2
@大卫:因为你已经拥有了。你已经提到了它的'.id'属性。所以'var a = document.createElement('div')。id =“myDiv”;'创建一个元素,设置它的'id',返回字符串''myDiv''存储在'a'变量中,并立即使该元素可用于垃圾回收,因为没有任何引用具有突出的引用。既然你没有提及它,你什么都不能做,或者用它来做任何事情。 –