2014-07-07 70 views
2

我從我的書中學習,它說我可以使用onselect事件而不是一個按鈕來改變頁面的背景顏色。我以爲這種做法是非常簡單的使用:簡單的JS,onclick改變背景顏色

<select id="selColor" onselect="changeColor()"> 

function changeColor() { 
    var selColor = document.getElementById("selColor"); 
    var color = selColor.value; 
    document.body.style.backgroundColor = color; 
} 

但失敗了。我試圖尋找它,但我找不到錯誤。

小提琴:http://jsfiddle.net/kL3Jz/2/

+1

[這裏我們去](http://jsfiddle.net/kL3Jz/4/)。你的代碼工作正常,你只需要選擇'無包裝 - 在'從小提琴選項! –

+0

你的選擇的價值是什麼。他們是否有效的顏色值? – Liam

+2

這是你想要的嗎? http://jsfiddle.net/kL3Jz/6/ – laaposto

回答

-1

嘗試說onchangeonselect的地方。

<select id = "selColor" onchange = "changeColor()"> 

在小提琴中,您還必須選擇No wrap-in <head>也。

+0

爲什麼?這是如何改變的。 – Liam

+0

我已添加到文件中並進行了檢查。 – Mritunjay

+0

@Liam在小提琴中,我們必須選擇無包裝。 – Mritunjay

-1

只是使用的

<select id = "selColor" onchange = "changeColor()"> 

代替

<select id = "selColor" onselect = "changeColor()"> 

使用相同的功能

function changeColor(){ 
     var selColor = document.getElementById("selColor"); 
     var color = selColor.value; 
     document.body.style.backgroundColor = color; 
     } 
+0

請正確格式化您的代碼部分。 – Mritunjay

+0

[這對於onselect完美無缺](http://jsfiddle.net/kL3Jz/6/)將事件更改爲onchange不起作用。 – Liam

1

正如其他人所說,使用onchange代替onselect。但是,在HTML中使用內聯事件通常被認爲是不好的做法。我建議你改爲在JavaScript中添加事件處理程序。

HTML

<h1>Please select a color</h1> 

<fieldset> 
    <select id="selectColor"> 
     <option value="#FFFFFF">White</option> 
     <option value="#FF0000">Red</option> 
     <option value="#FFCC00">Orange</option> 
     <option value="#FFFF00">Yellow</option> 
     <option value="#00FF00">Green</option> 
     <option value="#0000FF">Blue</option> 
     <option value="#663366">Indigo</option> 
     <option value="#FF00FF">Violet</option> 
    </select> 
</fieldset> 

的JavaScript

document.getElementById('selectColor').onchange = function() { 
    document.body.style.background = this.value; 
}; 

小提琴:http://jsfiddle.net/kL3Jz/18/

您應該換行JavaScript代碼window.onload = function() { ... }或將在<body>的結尾標記標記,就在結束標記之前。