2017-08-30 30 views
0

ドロップダウンリストが特定の値に変更されたときにjavascriptを実行しようとしていますが、Chromeでうまく動作しますが、IEは「onChange」機能を起動しません。ここで JavaScript onChangeがIEで起動しない

<select name="typeTenancy" onchange='TenancyCheck(this.value);' required> 
    <option value=""></option>             
    <option value="1">1 - Option 1</option> 
    <option value="2">2 - Option 2</option> 
    <option value="3">3 - Option 3</option> 
    <option value="4">4 - Option 4</option> 
    <option value="5">5 - Option 5</option>               
</select> 

はJavascriptである私は、それはオプション4を選んだ時に実行したいと思います:ここで

は私のドロップダウンリストのコードである

function TenancyCheck(val){ 
    var element=document.getElementById('tenancyDuration'); 
    if(val=='4') 
    blockReqTenancy(); 
    else 
    displayTenancy(); 
} 

function blockReqTenancy() { 
    document.getElementById("tenancyDuration").style="display:block"; 
    document.getElementById("tenancyDuration").required=true; 
} 

function displayTenancy() { 
    document.getElementById("tenancyDuration").style="display:none"; 
    document.getElementById("tenancyDuration").required=false; 
} 

をそれは、本質的に、入力フィールドを明らかにしたときにオプション4が選択されていますが、Internet Explorer 11を使用しているときは何も表示されません。

私もチェックして、HTMLコードの本文にスクリプトsrcを配置しました。

これがなぜ起こっているのか説明できる人は誰でもこの問題を解決するために正しい方向を向けることができます。

+1

問題は通常、自分自身を解決するためのsetAttribute機能に

完全なコードを使用します/ ja-jp/docs/Web/API/EventTarget/addEventListener)。いずれにせよ、[ブラウザコンソール(dev tools)](https://webmasters.stackexchange.com/q/8525)(「F12」を押す)を使用してエラーを読んでください。 – Xufox

+0

@Xufoxドロップダウンリストを使用してaddEventListenerを組み込むようにコードを変更するにはどうすればよいですか? –

答えて

1

あなたがgetElementByIdと言っているとき、あなたは "tenancyDuration"というidを持っていません。追加することができます。

IEの場合あなたの機能を少し変更してください。 style.display = "block"のように。そしてあなたはインラインイベントハンドラの使用を停止し、代わりに[ `addEventListener`](https://developer.mozilla.orgなどの標準機能を使用したら、これらのような

<select name="typeTenancy" id ="tenancyDuration" onchange='TenancyCheck(this.value);' required> 
<option value=""></option>             
<option value="1">1 - Option 1</option> 
<option value="2">2 - Option 2</option> 
<option value="3">3 - Option 3</option> 
<option value="4">4 - Option 4</option> 
<option value="5">5 - Option 5</option>               
</select> 

<script> 
function TenancyCheck(val){ 
    var element=document.getElementById('tenancyDuration'); 
    if(val=='4') 
    blockReqTenancy(); 
    else 
    displayTenancy(); 
} 

function blockReqTenancy() { 
document.getElementById("tenancyDuration").style.display="block"; 
document.getElementById("tenancyDuration").setAttribute("required", true); 
} 

function displayTenancy() { 
document.getElementById("tenancyDuration").style.display="none"; 
document.getElementById("tenancyDuration").setAttribute("required", false); 
} 
</script> 
+0

あなたの答えをありがとう、 "テナント期間" IDは私の質問には含まれていなかった私のhtml内の別のセクションを参照して、混乱のために謝罪します。 しかし、あなたは私の問題を解決しました!私は構文を以下から変更しました: .style = "display:block"; .style.display = "ブロック"; また、残りのsetAttributeなど、IE上で修正されました!マジック。 –

+0

それがあなたを助けてくれてうれしいです。楽しい ! :) – MMRahman

関連する問題