这是一个非常奇怪错误。 HTML认为该函数未定义,我该如何解决?这是代码:
<button id="links" onclick="links()">Links</button>
<script>function links(){document.location = ("links.html")}</script>
答案 0 :(得分:3)
问题在于document.links
已经存在,并且对全局document
上项目的隐式引用将优先于全局window
上的隐式引用。也就是说,如果document.<something>
存在并且window.<something>
存在,那么如果您仅使用<something>
,则解释器将首先检查您使用的名称是否存在于{{1} },然后再检查document
中是否存在您使用的名称。 (您的window
功能位于links
上)
“文档”界面的
window.links
只读属性返回文档中所有元素的集合以及具有href属性值的元素。
links
要么引用<button id="links" onclick="console.log(links === document.links); links();">text content</button>
<script>
function links() {
document.location = ("links.html")
}
</script>
,要么引用window.links
,而默认为links
:
document.links
或者最好使用Javascript正确附加处理程序;内联处理程序需要污染全球范围,并且无论如何通常被认为是非常糟糕的做法:
<button id="links" onclick="window.links();">text content</button>
<script>
function links() {
document.location = ("links.html")
}
</script>
document.querySelector('#links').addEventListener('click', () => {
document.location = "links.html";
});
答案 1 :(得分:-2)
那是因为您正在立即调用函数。尝试通过以下方式更改代码:
<button id="links" onclick="links">Links</button>
<script>function links(){document.location = ("links.html")}</script>