[英]Using Nodelists to Change Background Color of Page
我正在嘗試創建兩個函數,當輸入框(顏色選擇器)的值發生更改時,它們將更改我的 HTML 頁面的背景顏色。
這是我的 JavaScript:
function backgroundColor() {
let bod = document.getElementsByTagName("body")[0];
let bgc = document.getElementById('bgColor');
bgc.addEventListener("change", function(){
color(bod, bgColor.value);
});
}
function color(node, color){
for (let n of node){
n.style.backgroundColor = color;
}
}
和 HTML:
<p>Background Color: <input type="color" id="bgColor" value="#FFFFFF"/></p>
我不確定如何格式化,如果不清楚,請見諒!
addEventListener 回調有一個事件參數,其中包含輸入值,因此 function 應該是這樣的
bgc.addEventListener("change", function(event){
bod.style.backgroundColor = event.target.value;
});
不需要循環。
你有很多不同的事情出錯了。
bgColor.value
的引用應該是bgc.value
。backgroundColor()
所以你的聽眾永遠不會被添加。color()
但然后嘗試使用for()
調用對其進行迭代。getElementsByTagName()
這沒有錯,但除非您需要對HTMLCollection
提供的元素的實時引用,否則您應該堅持使用querySelector
或getElementById
,它們都返回單個HTMLElement
或querySelectorAll
返回 static NodeList
function backgroundColor() { let bod = document.querySelector('body'); let bgc = document.getElementById('bgColor'); bgc.addEventListener("change", function(){ color(bod, bgc.value); }); } function color(node, color){ node.style.backgroundColor = color; } backgroundColor()
<p>Background Color: <input type="color" id="bgColor" value="#FFFFFF"/></p>
這種方式(與 css 變量)
document.getElementById('bt-color').addEventListener('change',function() { document.body.style.setProperty('--vColor', this.value) })
body { --vColor: #ffffff; background-color: var(--vColor); }
<input type="color" id="bt-color" value="#ffffff">
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.