Мои навыки работы с JavaScript довольно базовые, но я написал этот код, в котором вы выбираете из раскрывающегося списка слева (Select1) параметр, который показывает только указанные параметры в раскрывающемся списке справа ( Select2), а остальное скрывает. Я также поместил его в блокнот здесь на случай, если вы захотите повозиться. Похоже, что код работает в обеих вышеперечисленных средах в Firefox 90.0.2, но он не работает в обеих и ничего не записывает в консоль в Chrome 92.0.4515.131.
Есть идеи, почему это работает в Firefox, но не в Chrome (и других), и что я могу сделать, чтобы оно работало во всех основных браузерах.
У меня Windows 10, и я хотел бы избежать iQuery, если это целесообразно, так как я пока не хочу изучать или использовать его, поскольку я начинаю с основ.
Спасибо.
Вот код:
<!DOCTYPE html>
<html>
<head>
<script>
function hide_options(select_id,type)
{
//alert("hide_options(select_id="+select_id+", type="+type+")");
console.log("hide_options(select_id="+select_id+", type="+type+")");
var x = document.getElementById(select_id);
for (i=1; i<x.options.length; i++)
{
x.options[i].style.display = "none";
}
x.options[0].selected = true;
if (type == 'A')
{ unhide_options(select_id,"one","two") }
if (type == 'B')
{ unhide_options(select_id,"two","three") }
if (type == 'C')
{ unhide_options(select_id,"two") }
}
function unhide_options(select_id,...opts)
{
//alert("unhide_options(select_id="+select_id+"opts="+opts+")");
console.log("unhide_options(select_id="+select_id+"opts="+opts+")");
for (i=0; i<opts.length; i++)
{
document.getElementById(select_id+"_"+opts[i]).style.display = "";
}
}
</script>
</head>
<body>
<p>Selecting an option in the "Select1" dropdown should show only those options in the "Select2" dropdown.</p>
<select name=select1>
<option>Select1...</option>
<option onclick="hide_options('field1','A')">Show options 1 + 2 only</option>
<option onclick="hide_options('field1','B')">Show options 2 + 3 only</option>
<option onclick="hide_options('field1','C')">Show option 2 only</option>
</select>
<select name=update_action id=field1>
<option value=''>Select2...</option>
<option value=one id=field1_one>One</option>
<option value=two id=field1_two>Two</option>
<option value=three id=field1_three>Three</option>
</select>
</body>
</html>
наиболее вероятная проблема заключается в том, что хром не запускается
onclick
при нажатии<option>
- вы пробовали функцию console.log внутриhide_options
?добавьте обработчик
change
кselect
и перепишите свою функцию с учетом этого