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()
函数。