2017-07-26 40 views
0

大多認爲出現,因爲我寫了這一個就像this(用戶希望切換使用純JS元素的類)或this(用戶希望希望切換使用jQuery等屬性)如何使用純JavaScript切換元素的屬性?

了類似的問題我的問題是兩者的混合。我知道el.classList.toggle()方法存在切換使用純JS的元素的類,但我希望切換使用純JS的不同屬性,特別是某些單選按鈕的checked屬性,因爲當選擇不同的選項時,這(令人討厭地)不會改變。

是否可以用純JS切換我的兩個單選按鈕上的checked屬性(通過切換我的意思是如果它存在,則將它從屬性中完全刪除,如果不存在則添加它)?

radios = document.getElementsByName("Floor"); 
 
for (i = 0; i < radios.length; i++) { 
 
    radios[i].addEventListener('change', function() { 
 
     this.(/*checked attribute*/).toggle() 
 
    }, false); 
 
}
<input checked id="Floor" name="Floor" type="radio" value="0">Ground Floor 
 
<input id="Floor" name="Floor" type="radio" value="1">First Floor

編輯:在評論中提到的possible duplicate question並沒有完全解決我的問題。我不需要更改選中哪個單選按鈕,我只想切換checked屬性,以便我更輕鬆地引用稍後在代碼中檢查的按鈕。當然,如果有另一種更簡單的方法來做到這一點,我就會全神貫注。

+0

[W3Schools的'Element.setAttribute()'](https://www.w3schools.com/jsref/met_element_setattribute.asp)[MDN'Element.setAttribute()'](HTTPS://顯影劑。 mozilla.org/en-US/docs/Web/API/Element/setAttribute) –

+0

另請參閱 - [DOM'.removeAttribute()'](https://developer.mozilla.org/docs/Web/API/Element/的removeAttribute)。由於「切換」不存在,您可以輕鬆創建一個功能來執行此操作。 – evolutionxbox

+2

你給了兩個元素相同的ID。這是無效的。它們可以具有相同的名稱,但ID是唯一的。 – Amy

回答

0

我沒有測試這個,但是這個應該可以做到。

radios = document.getElementsByName("Floor"); 
    for (i = 0; i < radios.length; i++) { 
    radios[i].addEventListener('change', function() { 
     if (this.checked) { 
      this.setAttribute("checked", "false"); 
     } else { 
      this.setAttribute("checked", "true"); 
     } 
    }, false); 
} 
相關問題