[英]Javascript: Changing style with radio buttons without JQuery?
我有三個應該更改字體大小的單選按鈕。 每個字體都有一個id
,用於指定要更改的字體大小。
由於某些原因,我一直收到“未捕獲的類型錯誤:無法將屬性'onchange'設置為null”。 我猜測這是因為sizeControl不存在而發生的,但顯然如此。 該變量已初始化並包含在window.onload = function()
,這意味着不是因為未在腳本之前加載HTML(我知道如何解決此錯誤的唯一情況)。
在這種特殊情況下,我不應該使用onchange
嗎? 我編寫fontSizeChange
函數的方式是否存在問題?
單選按鈕:
<label><input id="36pt" type="radio" name="size" checked="checked" />Medium</label>
<label><input id="48pt" type="radio" name="size" />Big</label>
<label><input id="60pt" type="radio" name="size" />Bigger</label>
var sizeControl = document.getElementById("size");
sizeControl.onchange = fontSizeChange;
嘗試更改顯示的size屬性的函數:
function fontSizeChange() {
var display = document.getElementById("display");
var fontChecked = [document.getElementById("36pt"),
document.getElementById("48pt"),
document.getElementById("78pt")
];
for (var i = 0; i < fontChecked.length; i++) {
if (fontChecked[i].checked == true) {
display.style.fontSize = fontChecked[i].id;
}
}
display.innerHTML = "String";
}
嘗試這個
<!DOCTYPE html>
<html>
<body>
<label><input id="36pt" type="radio" name="size" />Medium</label>
<label><input id="48pt" type="radio" name="size" />Big</label>
<label><input id="60pt" type="radio" name="size" />Bigger</label>
<label id="display">String</label>
<script>
var elements = document.getElementsByName("size");
for(var i=0; i < elements.length; i++){
elements[i].addEventListener('click', fontSizeChange, false);
}
function fontSizeChange(){
var display = document.getElementById("display");
display.style.fontSize = this.id;
}
</script>
</body>
</html>
該問題中的代碼僅在頁面加載時起作用一次,當頁面加載時選擇了第一個單選按鈕,則字體大小將始終為36pt。 沒有將eventListener
添加到單選按鈕,因此單擊時將不會發生任何事情。
在這里,在我的代碼我得到的所有元素,並添加點擊eventListener
和綁定的功能,因此只要點擊一個按鈕,此功能將執行與this
將把單擊按鈕。 我希望你能理解我的解釋。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.