【发布时间】:2025-11-28 04:10:02
【问题描述】:
我正在使用下拉菜单来动态更改页面上的内容。它有效,但仅在 Chrome 中引发 js 错误。 Chrome 的建议我不知道如何实施。网站是在 ExpressionEngine 2.8.1 中构建的。
Chrome 中的错误消息
未捕获的类型错误:无法设置 null functions.js:65 的属性“onchange”
event.returnValue 已弃用。请改用标准的 event.preventDefault()。
我的 JS 代码
document.getElementById("drop").onchange = function() {
if (this.selectedIndex!==0) {
window.location.href = this.value;
}
};
我的 HTML 代码
<form method="post" action="{path='locations/index'}" class="drop">
<select id="drop">
<option>Select a Location:</option>
{exp:channel:entries channel="locations" category="not 3" orderby="title" sort="asc" dynamic="no"}
<option value="{site_url}index.php/locations/{url_title}">{title}</option>
{/exp:channel:entries}
</select>
</form>
【问题讨论】:
-
在 Chrome 中运行良好,您运行的是什么版本?我在jsfiddle 中做到了这一点,效果很好
-
你能提供更多关于JS的信息吗?该脚本是否直接在 HTML 中?有更多的 JS 还是只有这一行?您确定您的 Chrome 稳定吗?
-
看起来你是在一个 jQuery 事件处理程序中执行这段代码,
$(document).ready()可能吗?如果代码在其他浏览器中确实有效,那么您的模板可能会在 Chrome 中中断。您可以在尝试将事件处理程序设置为select之前检查form的innerHTML。你能看到选择标签和它的 id 吗? -
这很可能是浏览器的怪癖。了解 vanilla js 访问 dom 很棒,但如果您想要可靠性,请使用 JQuery 选择适当的元素。就像发布的 Adeneo 一样,唯一的解释是 document.getElementById 调用没有选择该元素。没有其他信息,无法回答。
标签: javascript jquery google-chrome