2

我有一个包含三个不同选项的选择框(4 个实际上是空白选项),单击按钮后,我需要一个警报框来显示消息。这是一些代码。

HTML:

<select id="item1" name="Item 1">
      <option></option>
      <option value="1">Camera</option>
      <option value="2">Microphone</option>
      <option value="3">Tripod</option>
    </select>

    <button onclick="message()">Go!</button>

Javascript:

    <SCRIPT language = javascript>

function message() {

var s = document.getElementById('item1');
var item1 = s.options[s.selectedIndex].value;

if (item1 = 1) {
    alert("it equals camera")
}
else if (item1 = 2) {
    alert("it equals microphone")
}
else if (item1 = 3) {
    alert("it equals tripod")
}
}

</SCRIPT>

每次我单击按钮时,警报框都会显示“它等于相机”。我可以选择麦克风并单击按钮,它仍然会这样说。

如果我把

alert(item1)

在函数中它显示 1、2 或 3。所以我假设它与 if..else.. 语句有关。

4

5 回答 5

4

在 JavaScript 中我们应该使用===,这也检查数据类型

于 2012-12-30T21:02:19.083 回答
3

记住使用==而不是=

if(item == 1)

代替

if(item = 1)
于 2012-12-30T21:02:09.537 回答
1

在 JavaScript(几乎所有其他花括号语言)中,单曲=总是意味着assignments。因此,您将值分配1item1.

您需要比较运算符,即==.

function message() {
    var s = document.getElementById('item1');
    var item1 = s.options[s.selectedIndex].value;

    if(item1 == '1') {
        alert("it equals camera")
    } else if(item1 == '2') {
        alert("it equals microphone")
    } else if(item1 == '3') {
        alert("it equals tripod")
    }
}

以下是一些改进代码的其他建议:

  • 不要使用不推荐使用的language属性<script>。对 JavaScript 或者如果你想明确一点就<script>很好。<script type="text/javascript>
  • 不要使用内联事件。而不是onclick="..."使用该方法注册事件处理程序addEventListener()
于 2012-12-30T21:02:16.397 回答
1

代替

if (item1 = 1) {

if (item1 == 1) {

(其他的也一样)

item = 1更改item1和 返回的值1,其评估与true测试相同。

但请注意,您可以更有效地

  • 使用开关
  • 或直接读取值

例如 :

document.getElementById('item1').onchange = function(){
    alert("it equals " + this.options[this.selectedIndex].innerHTML);        
}​​​​​​​​

示范

于 2012-12-30T20:59:46.460 回答
0

为什么不使用这种方法,当您的选择器获得更多项目时会更容易?

var s = document.getElementById("item1");
var item1 = s.options[s.selectedIndex].text;
window.alert('it equals '+item1);

编辑: JSFiddle

编辑2:更改===解决您的问题。而不是使用s.options[s.selectedIndex].value你可以简单地使用s.selectedIndex. 这也将返回 1、2 或 3,这更容易理解。

于 2012-12-30T21:47:15.740 回答