可以';t在<;选项>;


Can't change background color in <option>

当我把onClick放入<select>时,脚本可以工作,但当我把它放入option时,它不工作!

这是HTML select脚本:

            <select name="<?php echo $pos; ?>" id="<?php echo $pos; ?>">
                <option value="0">0</option>
                <option onClick="ship('1','<?php echo $pos; ?>');" value="1">1</option>
                <option onClick="ship('2','<?php echo $pos; ?>');" value="2">2</option>
                <option onClick="ship('3','<?php echo $pos; ?>');" value="3">3</option>
                <option onClick="ship('4','<?php echo $pos; ?>');" value="4">4</option>
            </select>

这里是JavaScript:

<script>
    function ship(num, pos) {
        if (num == 0){
            document.getElementById(pos).style.backgroundColor="white";
        }
        if (num == 1){
            document.getElementById(pos).style.backgroundColor="red";
        }
        if (num == 2){
            document.getElementById(pos).style.backgroundColor="green";
        }
        if (num == 3){
            document.getElementById(pos).style.backgroundColor="blue";
        }
        if (num == 4){
            document.getElementById(pos).style.backgroundColor="yellow";
        }

    }
</script>
选项上的

onclick在大多数浏览器上都不起作用(或者可能没有),相反,您可以根据其value属性监听select和switch的更改事件。

你可以做:

var color = [
    "white",
    "red",
    "green",
    "blue",
    "yellow"];
window.onload = function () {
    document.getElementById('selectId').onchange = function () {
        this.style.backgroundColor = color[this.value];
    }
}

演示

对于一个选项,onClick有时可能不起作用。所以最好将onChange函数放在select标记中,并传递所选子项的值。

您应该在select元素上使用onChange事件,如:

<select onChange="ship(this.selectedIndex, this.options[this.selectedIndex].value);

在这种情况下,ship函数获取所选选项的索引和值。因此,在您的情况下,将选项更改为

 <option value="<?php echo $pos; ?>">1</option>

可能也需要。编辑:只得到一半的问题。请参阅PSLs的答案以获得更好的解决方案:)