我对这段代码没有任何问题,但我很好奇为什么下面的函数名称中似乎需要一个下划线。
function _clear()
{
document.getElementById("test").innerHTML = "";
}
如果函数名称包含下划线,则函数 _clear() 仅在单击按钮后执行。
<button type="submit" onClick="_clear()">Clear</button>
最佳答案
根据MDN ,clear() 是 Document 对象的一种方法,可以通过编写 document.clear()
来调用该方法。 。但是,由于此方法已被弃用,因此根本不应该调用它。事实上,在 HTML5 中,该方法不执行任何操作(请参阅 HTML5 spec )。
因此,在实际从 Document 对象中删除该方法之前,人们可能会得出这样的结论:用户定义的函数与 Document 的方法同名可能存在潜在冲突。也就是说,以下代码使用 Google Chrome(版本 49.0.2623.112 m)运行得很好:
var d = document;
d.g = d.getElementById;
function clear()
{
d.g("test").innerHTML = "";
}
var test = d.g("test");
test.onmouseover=clear;
参见demo
clear() 和 document.clear() 之间不太可能发生冲突。我编写了一个用户定义的函数,它使用与另一个文档方法相同的名称,并且代码运行完美;请参阅here .
显然,当 onclick 事件属性被赋予用户定义函数“clear()”时,与 document.clear()
关联的clear() 存在某种困惑。 ;请参阅here并阅读官方答案中的精彩解释。简而言之,问题归结为“...Document 对象位于 Window 对象之前的作用域链 (...)”(请参阅 JavaScript: The Definitive Guide )。
如果由于某种原因您确定代码可以正常工作,请按以下步骤指定正确的上下文:
HTML:
<div id="test">a test to see if this will clear</div>
<button id="but" onclick="window.clear()">Clear</button>
因此,用户定义的函数实际上成为 Window 对象的一个方法,与 window.open() 等内置方法一起,允许代码执行;请参阅here .
请注意,发生点击事件时执行操作的最佳方法是将此行放入 JavaScript 代码中,并给定一个 id 为“but”的按钮:
but.addEventListener('click',clear);
参见demo .
关于Javascript - 函数名称中需要下划线吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44452479/