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'變量中,並立即使該元素可用於垃圾回收,因爲沒有任何引用具有突出的引用。既然你沒有提及它,你什麼都不能做,或者用它來做任何事情。 –