2012-06-12 103 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」而不是元素。

相關問題