我正在尝试使用选择框来显示许多项目。我的选择标签包含是这样写的:
<%= select_tag "number_of_pets", options_for_select(allowed_pets_options, @pet_number_storage), onchange:"show_pet_forms(this.value, #{RecordsHelper::ALLOWED_PETS})" %>
并像这样解析成 HTML:
<select id="number_of_pets" name="number_of_pets" onchange="show_pet_forms(this.value, 4)">
<option value="1" selected="selected">1 Pet</option>
<option value="2">2 Pets</option>
<option value="3">3 Pets</option>
<option value="4">4 Pets</option>
</select>
在我的 application.html.erb 文件的头部区域中,我有这个 javascript:
<script type="text/javascript">
function show_pet_forms(pets_selected, pets_allowed) {
for (var i=1;i<=pets_selected;i++)
{
element_id = "pet-" + i;
document.getElementById(element_id).style.visibility = "visible";
document.getElementById(element_id).style.display = "block";
}
for (var i=(pets_selected+1);i<=pets_allowed;i++)
{
element_id = "pet-" + i;
document.getElementById(element_id).style.visibility = "hidden";
document.getElementById(element_id).style.display = "none";
}
}
</script>
(最初javascript在coffeescript文件中,但我在试图找出问题所在时移动了它。
我试图显示和隐藏的元素是:
<div id="pet-1">
SOME STUFF HERE
</div>
...
<div id="pet-4">
SOME STUFF HERE
</div>
不幸的是,当我在选择框中选择一个选项时,我没有看到任何变化,而且我无法确定它是否没有正确触发事件,或者我的 javascript 是否有问题(很可能)。错误可能在哪里?
谢谢!