2

3つの異なるオプション(実際には空白のオプションが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

交換

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 に答える
1

JavaScript (ほとんどすべての中括弧言語) では、シングル=は常に割り当てを意味します。したがって、値1を に割り当てますitem1

である比較演算子が必要です==

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><script>JavaScript の場合、または<script type="text/javascript>明示的にしたい場合はJustで十分です。
  • インライン イベントは使用しないでください。onclick="..."メソッドを使用してイベント ハンドラーを登録する代わりにaddEventListener()
于 2012-12-30T21:02:16.397 に答える
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 に答える