2012-05-10 8 views
0

で定義されていない:フォームiは要素のオプションの値を取得しようとしているFirefoxの

<div id="decorazioni_agg">Decorazioni aggiuntive:<br> 
     <select id="decorazioni" name="decorazioni"> 
      <option class="option" value="smarties">Smarties</option> 
      <option class="option" value="scaglie">Scaglette di 
          cioccolato</option> 
      <option class="option" value="cheerios">Cheerios</option> 
      <option class="option" value="chocopops">Choco 
          Pops</option> 
     </select><br> 

     <input class="button" name="aggiungi" type="button" value="Aggiungi 
        decorazione" onClick="add_decoration(decorazioni.value)"> 
    </div> 

をそしてこれは、関数add_decoration(OBJ)である:

function add_decoration(tipo) 
{ 
if(tipo == 'smarties') 
    add_smarties(); 
else 
    add_something(tipo); 
} 

は今、これが機能していますChromeとIE8ではどちらもFirefox 3.5では使用できません。 Firefoxのエラーコンソールには次のようなメッセージが表示されます:

decorazioni is not defined 

私はコードをきれいに保つことができるので、事前

答えて

0
onclick="var elem = document.getElementById('decorazioni'); add_decoration(elem.options[elem.selectedIndex].value);" 

で おかげでしかし、適切なイベント登録の代わりに、インラインイベントを使用する方がよいでしょう。ここにjQueryの例があります。それを動作させるには、ボタンにIDを与えます。

$('#buttonid').on('click', function() { 
    add_decoration($('#decorazioni').val()); 
}); 
0

HTMLでイベントハンドラをバインドしないでください。

<input class="button" id="aggiungi" name="aggiungi" type="button" value="Aggiungi decorazione" /> 

document.getElementById('aggiungi').onclick= function() { 
    add_decoration(document.getElementById('decorazioni').value); 
}; 
+0

HTMLにとjQueryを使用せずに、この結合イベントハンドラを行うための方法がない、ありがとう!私はそのエラーの感覚を得ることはありません。私は、HTMLでイベントハンドラを使用する必要があります。 – stilatore

+0

あなたが望むならjquery(ThiefMasterの答えを参照) – jbabey

+0

の理由でそれを行うことができますが、私が投稿したコードはネイティブなjavascriptです。理由:[分離の懸念](http://en.wikipedia.org/wiki/Separation_of_concerns #HTML.2C_CSS.2C_and_JavaScript) – jbabey

関連する問題