2013-04-22 37 views
14

Javascript中動態創建DOM選項元素的首選方式是什麼?我發現這兩個選項的構造和實際的代碼中使用像這樣的createElement變種:在Javascript中動態創建選項元素

var option = new Option(text, value); 

這:

var option = document.createElement('option'); 
option.text = text; 
option.value = value; 

是否有任何的這些方法的任何缺點/兼容性問題?另外,是否有其他方法可以動態創建選項,出於某些原因應該優先考慮上述選項?

回答

11

我知道的兩種方法沒有區別。使用Option構造函數可以方便地設置選項的值和文本,但可以使用valuetext屬性來執行相同的操作。

有本來是innerHTML方式,但IE8及以上故障的硬盤在這...

+1

儘管它對代碼沒有影響,但還是有一點區別的。使用'var option = new Option();'將導致'option'成爲'Option'對象的一個​​實例,''optionof'選項'是'true',同時使用'var option = document.createElement('option' );''會導致'option'是一個文字,而不是'Option'對象的一個​​實例,因此'option instanceof Option'是'false';雖然兩者都是由相同的'構造函數'創建的,'option.constructor'將是'function HTMLOptionElement()'函數。 – Nope 2013-12-18 23:23:43

1

我注意到例如,使用新的選項()不能很好IE9下它工作在IE10工作, IE11。我最近回到原來的代碼,並恢復有人用document.createElement('option')去改變IE9的改變。

+0

這不完全準確。在我工作的地方,爲IE6開發的一大組遺留代碼使用新的Option()。也許在你的代碼中有另一個問題阻止了它的工作。 – 2015-04-28 08:53:23