gpt4 book ai didi

javascript - 通过 JavaScript 引用 HTML 元素的正确方法是什么?

转载 作者:行者123 更新时间:2023-11-30 09:09:01 25 4
gpt4 key购买 nike

我正在使用纯 JavaScript 和 HTML 制作颜色选择器。它由三个 HTML 选择(下拉框)和一个 div 组成,其背景颜色将由 JavaScript 更改。我也试图尽可能“正确”地做到这一点。这意味着 HTML 中没有 Javascript 代码。

到目前为止,我的代码如下所示:

    var red = document.getElementById('red');
red.onchange = update();

var green = document.getElementById('green');
green.onchange = update();

var blue = document.getElementById('blue');
blue.onchange = update();

var thebox = document.getElementById('colourbox');

function d2h(d) {return d.toString(16);}
function h2d(h) {return parseInt(h,16);}

function update(){
finalcolor = '#' + d2h(red.value) + d2h(green.value) + d2h(blue.value)
thebox.style.background = finalcolour;
}

HTML 看起来像这样:

<div id="colourbox"></div>
<form name="myform" action="colour.html">
<select name="red" id="red">
<option value="0">0</option>
.... etc etc ....
</select>
<select name="green" id="red">
<option value="0">0</option>
.... etc etc ....
</select>
<select name="blue" id="red">
<option value="0">0</option>
.... etc etc ....
</select>
</form>

问题在于所有 document.getElementById() 调用都返回 null。大概是因为它们在代码运行时不存在。我曾尝试将代码放在 window.onload = function() {} 中,但是 a) 这只会让人感到困惑,b) 然后我必须在函数中定义更新函数,这似乎不正确。

任何人都可以阐明这一点吗?是否有任何一般规则可以帮助我理解它是如何工作的?或者关于这个主题的一些文档?

编辑:修改后的代码:

<script type="text/javascript">
window.onload = function(){
var red = document.getElementById('red');
red.onchange = update();

var green = document.getElementById('green');
green.onchange = update();

var blue = document.getElementById('blue');
blue.onchange = update();

var thebox = document.getElementById('colourbox');

function d2h(d) {return d.toString(16);}
function h2d(h) {return parseInt(h,16);}

function update(){
var finalcolor = '#' + d2h(document.getElementById('red').value) + d2h(document.getElementById('green').value) + d2h(document.getElementById('blue').value);

document.getElementById('colourbox').style.background = finalcolor;
}

}
</script>

最佳答案

将代码放在 onload 事件的处理程序中效果很好,并且被广泛接受。将函数放在函数中也是如此(取决于原因)。

var mypage = {
red: null,
green: null,
blue: null,
colourbox: null,

d2h: function(d) {
var hex = d.toString(16);
if (hex.length < 2) {
hex = '0' + hex;
}
return hex.toUpperCase();
},

h2d: function(d) {
return parseInt(h, 16);
},

update: function() {
mypage.colourbox.style.backgroundColor = '#' + mypage.d2h(mypage.red.value) + mypage.d2h(mypage.green.value) + mypage.d2h(mypage.blue.value);
}
};

window.onload = function() {
mypage.red = document.getElementById('red');
mypage.red.onchange = mypage.update;

mypage.green = document.getElementById('green');
mypage.green.onchange = mypage.update;

mypage.blue = document.getElementById('blue');
mypage.blue.onchange = mypage.update;

mypage.colourbox = document.getElementById('colourbox');
}

这是一个blog post由 dean edwards 关于使用 window.onload

另一种选择是将您的 javascript 放在页面底部而不是顶部。

关于javascript - 通过 JavaScript 引用 HTML 元素的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2073316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com