Javascript 为什么从onclick属性调用的函数write()解析为document.write()?
为什么通过onclick属性调用的Javascript 为什么从onclick属性调用的函数write()解析为document.write()?,javascript,html,onclick,document.write,Javascript,Html,Onclick,Document.write,为什么通过onclick属性调用的write()函数会解析为document.write()并替换文档?有没有办法阻止这种事情发生 <!-- Replaces the document with the text "from onclick." --> <button onclick="write('from onclick.')">Write Function</button> <!-- Logs the text "Alternate write
write()
函数会解析为document.write()
并替换文档?有没有办法阻止这种事情发生
<!-- Replaces the document with the text "from onclick." -->
<button onclick="write('from onclick.')">Write Function</button>
<!-- Logs the text "Alternate write function triggered... from onclick." -->
<button onclick="altWrite('from onclick.')">Alternate Write Function</button>
<script>
function write (arg) {
console.log("Write function triggered... " + arg);
}
function altWrite (arg) {
console.log("Alternate write function triggered... " + arg);
}
// Logs the text "Write function triggered... from code."
write("from code.");
// Logs the text "Alternate write function triggered... from code."
altWrite("from code.");
</script>
写函数
交替写入功能
函数写入(arg){
日志(“写入功能触发…”+arg);
}
函数altWrite(arg){
console.log(“触发了备用写入功能…”+arg);
}
//记录文本“从代码中触发写入函数”
写(“来自代码”);
//记录文本“从代码触发的备用写入函数”
altWrite(“来自代码”);
内联处理程序不幸地具有非直观的块,用于:
(1) 调用它们的元素(此处为按钮)
(2) 该文件:
因此,当从内联处理程序调用write
时,作用域链首先看到document
上的write
属性(并将其作为结果调用),而不是继续搜索window
上的write
属性(您定义的write函数存在于此)
解决方案是不使用内联处理程序:而是使用addEventListener
函数写入(arg){
日志(“写入功能触发…”+arg);
}
函数altWrite(arg){
console.log(“触发了备用写入功能…”+arg);
}
const[button1,button2]=document.queryselectoral('button');
按钮1.addEventListener(“单击”,写入);
按钮2.addEventListener(“单击”,altWrite)代码>
写函数
备用写入功能
onclick=“window.Write('from onclick')”