我正在尝试获取元素选项的值:
<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 :(得分:0)
onclick="var elem = document.getElementById('decorazioni'); add_decoration(elem.options[elem.selectedIndex].value);"
但是,最好使用正确的事件注册而不是内联事件。这是一个jQuery示例;使它工作给按钮一个id:
$('#buttonid').on('click', function() {
add_decoration($('#decorazioni').val());
});
答案 1 :(得分: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);
};