2

この非常に単純な JavaScript を使用して、選択したオプションをスパンに表示します。IE8 以外のすべてのブラウザで正常に動作します。

コード -

<select onchange="searchdisplay(this.value)">
<option>kill</option>
<option>bill</option>
<option>by</option>
<option>torentino</option>
<option>is </option>
<option>not </option>
<option>good</option>
<Select>

<span id="container">
<span>

脚本 -

<script>
function searchdisplay(val)
{
    var div = document.getElementById('container');
    div.innerHTML =  val;
}
</script>

これに対する解決策はありますか?ありがとう。

4

3 に答える 3

1

あなたのスクリプトは機能します..値属性が存在しないだけです.

他のブラウザは「値」属性を探していないと思います..オプションのテキストが欠落しているときに使用しますが、IE8はそれを必要とします..

各オプションに value 属性を追加すると問題ありません

<select onchange="searchdisplay(this.value)">
<option value="kill">kill</option>
<option value="bill">bill</option>
<option value="by">by</option>
<option value="torentino">torentino</option>
<option value="is ">is </option>
<option value="not ">not </option>
<option value="good">good</option>
</select>
于 2013-05-19T06:49:48.897 に答える
1

問題はthis.valueIE8にあり、次のように変更します:-

<select onchange="searchdisplay(this.options[this.selectedIndex].value)">そしてそれはうまくいくでしょう。

デモ

現在のコードで

他の人がコメントで言ったように、マークアップも修正してください。

<select onchange="searchdisplay(this.options[this.selectedIndex].value)">
    <option>kill</option>
    <option>bill</option>
    <option>by</option>
    <option>torentino</option>
    <option>is</option>
    <option>not</option>
    <option>good</option>
</select>
<span id="container"></span>

理想的な方法はvalue、選択オプションの属性を追加することです。this.valueおそらく動作することが保証されています。

于 2013-05-19T06:46:45.560 に答える
0

特にIE8イベント処理に関するこのページには、次のように書かれています:

Microsoft のイベント処理には欠点がたくさんありますが、より深刻なものには次のようなものがあります。

  1. イベントごとのローカル オブジェクトではなく、1 つのグローバル イベント オブジェクトのみ。

  2. attachEvent メソッドを使用する場合、イベント処理関数のキーワード this は、実際に発生した HTML イベントではなく、ウィンドウ オブジェクトを参照します。

  3. キャプチャ フェーズはサポートされていません。問題のイベントに「on」プレフィックスが必要な、異なる構文。

項目 2は、クリックされた要素ではないことを暗示していthisます。このログを確認するには、または IE8 でより適切に、渡された値を警告します。onchangewindowsearchDisplay

次のコード:

<script type="text/javascript">

function getOption(e) {
    var event = e|window.event;
        alert(event.srcElement.innerHTML); // works in IE but shows the select object
        alert(event.target.innerHTML); // works well in FF, shows the right option
}

</script>

<body oncontextmenu="return false;">
<select size="4" oncontextmenu="getOption(event)">
    <option value="1"> option1 </option>
    <option value="2"> option2 </option>
</select>
</body>

役立つかもしれませんが、selects で非常によく似た状況を回避するためにここに投稿されています。

于 2013-05-19T06:53:37.050 に答える