Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用a<;选择>;要素_Javascript_Addeventlistener_Content Security Policy - Fatal编程技术网

Javascript 使用a<;选择>;要素

Javascript 使用a<;选择>;要素,javascript,addeventlistener,content-security-policy,Javascript,Addeventlistener,Content Security Policy,如何基于元素的值使用JS重定向页面 我想替换附加到HTML元素的onchange=“内联JS操作。例如,我有一个触发内联onchange=“事件,该事件接受所选选项并使用window.document.location.href=''重定向。我想要通过CSP规则(无内联脚本)并使用.addEventListener的东西。这就是我想到的。它能用,但看起来很笨重。有更好的办法吗 window.addEventListener("DOMContentLoaded",EventListeners);

如何基于
元素的值使用JS重定向页面

我想替换附加到HTML元素的
onchange=“
内联JS操作。例如,我有一个
触发内联
onchange=“
事件,该事件接受所选选项并使用
window.document.location.href='
'重定向。我想要通过CSP规则(无内联脚本)并使用
.addEventListener
的东西。这就是我想到的。它能用,但看起来很笨重。有更好的办法吗

window.addEventListener("DOMContentLoaded",EventListeners);

function EventListeners() {
  document.getElementById("MySelect").addEventListener("change", ChangeSomething);
}
function ChangeSomething() {
 var sel = document.getElementById("MySelect");
 var sel_opt = sel.options[sel.selectedIndex].id;
 window.document.location.href='page.php?id=' + sel_opt;
}
出于某种原因,如果我尝试:
document.getElementById(“MySelect”).addEventListener(“change”,ChangeSomething)

作为第一行,我得到一个错误,说getElementById(…)为null。

将ID放入选项的值中,而不是ID,因此,您可以只在事件侦听器中使用
sel.value
您可以只在事件侦听器中使用
this
,而不是按ID选择元素。请参阅为什么会出现此错误。为什么您觉得这很笨拙?谢谢@Barmar,但只使用ID选项行吗?我需要得到选中的选项,因为表单没有被发布,我只是在监听一个JS事件。如果我没有传递对
的引用,我将如何使用
?我对笨拙的评论是因为我必须编写一个单独的
EventListeners()
函数。