我使用純JavaScript和HTML製作顏色選擇器。它由三個HTML選擇(下拉框)和一個div組成,其背景色將通過JavaScript進行更改。我也試圖儘可能「正確地」做到這一點。這意味着HTML中沒有Javascript代碼。什麼是通過JavaScript引用HTML元素的正確方法?
到目前爲止我的代碼看起來是這樣的:
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>
就我所見,你的HTML根本不包括你的JavaScript代碼(即,甚至沒有腳本標籤)。你如何運行它? – danben 2010-01-15 16:59:51
是的,爲了簡潔起見我把這條線留下了。我正在使用這一行: – 2010-01-15 17:05:37
嗯,我設法通過將所有內容放在window.onload中,然後使用document.getElementById ()每次,而不是分配給一個變量,然後使用變量。看起來有點醜,但它有效:s – 2010-01-15 17:07:34