根據SitePoint(以及我自己的實驗),「setAttribute()」的IE實現有問題且不可靠。我可以使用JavaScript設置'name'屬性嗎?
同樣根據SitePoint,name
屬性是隻讀的。
有沒有另外一種方法可以在元素上設置name
屬性?我需要這個用於單選按鈕。如果可能的話,我想要一個沒有jQuery的解決方案,因爲我目前沒有使用庫。
在此先感謝!
根據SitePoint(以及我自己的實驗),「setAttribute()」的IE實現有問題且不可靠。我可以使用JavaScript設置'name'屬性嗎?
同樣根據SitePoint,name
屬性是隻讀的。
有沒有另外一種方法可以在元素上設置name
屬性?我需要這個用於單選按鈕。如果可能的話,我想要一個沒有jQuery的解決方案,因爲我目前沒有使用庫。
在此先感謝!
Sitepoint 謊言正在討論'name'的不同用法(請參閱Anthony的評論)。它不是隻讀的,它只是存在一個長期存在的IE bug(高達v7),在表單字段上設置「名稱」只是部分有效。特別是單選按鈕不能正確接受它。
微軟認可的解決方案,as detailed here是使用的IE瀏覽器的版本的createElement通話的同時設置屬性的一個可怕的不好的特性:
var radio= document.createElement('<input type="radio" name="test" value="a" />');
可能是一個更好的辦法,簡直是用好老innerHTML的,例如:
var div= document.createElement('div');
div.innerHTML= '<input type="radio" name="test" value="a" />';
var radio= div.firstChild;
您是否嘗試過簡單地爲元素分配新名稱name
屬性?我不知道如何跨瀏覽器,但它的工作與任何支持DOM級別1的東西。
我不知道你爲什麼要使用setAttribute來執行此操作?
我發佈了一些代碼,這樣做,併爲我工作。如果我先看到這個答案,我就不會發布它。 – Zoidberg
儘管如此,代碼片段還是不錯的。 – montrealist
這爲我工作
alert(document.getElementById('testInput').name);
document.getElementById('testInput').name = 'someName';
alert(document.getElementById('testInput').name);
與W3C DOM Compatibility - Core)
<input type="radio" name="test" id="testInput" />
在IE6/7中測試? – montrealist
工作在IE 7和那個奇蹟稱爲IE 6 – Zoidberg
它部分工作。然而,這並沒有改變按鈕所屬的單選按鈕組,所以如果你有,他們將保持獨立在同一頁上稱爲someName另一個輸入,如果您有名爲test的另一個輸入時,它仍然會排斥新someName控制。此外,如果您嘗試使用getElementsByName或form.someName/form.elements.someName檢索'someName',但是IE無法找到它。可能會有更多奇怪的相互作用,一般來說這是最好的避免。 – bobince
尋找的setAttribute的你可以嘗試使用setAttributeNode方法(而不是()。它可能在IE 6及更高版本上運行。
IE DOM不允許我在運行時更改名稱屬性。但是,使用jQuery更新 name屬性適用於IE。我在IE9上測試過。 有關示例,
<input id="ID0E2B" name="Field2" value="3" type="radio" />
$("#ID0E2B").attr("name", newName);
你SitePoint參考點的屬性的名稱屬性不反對一個HTMLInputELement的名稱屬性格式,你需要用雞蛋比較蛋。 – AnthonyWJones