1

我正在使用选择列表来更改衬衫图片的预览图像的颜色。所以我有一个名为 selectedColor 的全局变量,当我从选择列表中选择一种颜色时,我想用它来更改图片。它只能将颜色更改为蓝色,但无法将颜色更改回红色。

这是相关的javascript

var chosenColor="Red";

function chooseBlue() {
     document.getElementById("largerview").src = "bluezigzag.jpg";
     chosenColor = "Blue";
     }

function chooseRed() {
     document.getElementById("largerview").src = "redzigzag.jpg";
     chosenColor = "Red";
     }


function getSelectionChange() {      //selects the color that the user selects in the selection list
     if (this.value = "red") {
         chooseBlue();
         window.alert(chosenColor);
     }
     else if (this.value = "blue") {
         chooseRed();
         window.alert(chosenColor);
     }
}

这是选择列表

<select size="1" name="color" onchange="getSelectionChange();">
     <option value="red">Red</option>
     <option value="blue">Blue</option>
</select>       

4

1 回答 1

3

您正在使用赋值运算符=而不是比较运算符=====

if (this.value = "red") {

...

else if (this.value = "blue") {

应该

if (this.value === "red") {

...

else if (this.value === "blue") {

当您使用this.value = "red"它时,将值设置为"red",然后表达式返回"red"- 这是真的,因此执行进入该 if 块。

您是否考虑过将单独的选择颜色功能替换为以下内容:

function getSelectionChange() {
     document.getElementById("largerview").src = this.value + "zigzag.jpg";
     window.alert(this.value);
}

显然你仍然可以设置一个全局chosenColor变量,但我不确定你需要它做什么。

编辑:此外,如果您使用内联onchange=处理程序调用函数,this则将是onchange属性代码中的相关元素,但不在从那里调用的函数中 - 除非您明确设置它:

onchange="getSelectionChange.call(this);"
于 2013-04-25T20:45:05.470 回答