将 onClick 从 HTML 迁移到 Javascript 文件
Migrate onClick from HTML to Javascript file
在我的 HTML 中,这个有效
<div id="portfolio1" onclick="changeMainFrame('lib/portfolio1.html')">
触发以下功能:
function changeMainFrame(srcURL){
var target = document.getElementById("mainFrame");
target.src = srcURL;
}
我想将它迁移到我的 javascript 文档中。但这不起作用:
document.getElementById("portfolio1").onclick = changeMainFrame("lib/portfolio1.html");
我不知道如何解决这个问题。有什么提示吗?如此简单却费时的事情,在任何地方都找不到类似的情况。
document.getElementById("portfolio1").onclick = function() {
changeMainFrame("lib/portfolio1.html");
}
您正在调用函数 changeMainFrame。您要做的是提供一个函数包装器。
document.getElementById("portfolio1").onclick = function() {
changeMainFrame("lib/portfolio1.html");
}
function changeMainFrame(txt) {
alert(txt);
}
<div id="portfolio1">Click Me</div>
您需要为 document.getElementById("portfolio1").onclick
分配一个函数,该函数将在单击该元素时调用。问题是您没有分配函数,而是分配了 invoking/calling 该函数的结果。您可以做的是提供一个函数,您可以在其中调用 changeMainFrame
:
document.getElementById("portfolio1").onclick = function() {
changeMainFrame("lib/portfolio1.html");
};
您需要使用 .onclick 或 onclick 属性。它们都需要一个处理程序函数,而您传递的只是 运行 您的 changeMainFrame 函数(空)的结果。将其包装在 function() { }
中会产生您预期的结果。
function changeMainFrame(srcURL){
var target = document.getElementById("mainFrame");
target.src = srcURL;
}
document.getElementById("portfolio1").onclick = function(){changeMainFrame('https://codepen.io')}
<div id="portfolio1">go to codepen.io</div>
<iframe id="mainFrame" src="https://example.com"></iframe>
在我的 HTML 中,这个有效
<div id="portfolio1" onclick="changeMainFrame('lib/portfolio1.html')">
触发以下功能:
function changeMainFrame(srcURL){
var target = document.getElementById("mainFrame");
target.src = srcURL;
}
我想将它迁移到我的 javascript 文档中。但这不起作用:
document.getElementById("portfolio1").onclick = changeMainFrame("lib/portfolio1.html");
我不知道如何解决这个问题。有什么提示吗?如此简单却费时的事情,在任何地方都找不到类似的情况。
document.getElementById("portfolio1").onclick = function() {
changeMainFrame("lib/portfolio1.html");
}
您正在调用函数 changeMainFrame。您要做的是提供一个函数包装器。
document.getElementById("portfolio1").onclick = function() {
changeMainFrame("lib/portfolio1.html");
}
function changeMainFrame(txt) {
alert(txt);
}
<div id="portfolio1">Click Me</div>
您需要为 document.getElementById("portfolio1").onclick
分配一个函数,该函数将在单击该元素时调用。问题是您没有分配函数,而是分配了 invoking/calling 该函数的结果。您可以做的是提供一个函数,您可以在其中调用 changeMainFrame
:
document.getElementById("portfolio1").onclick = function() {
changeMainFrame("lib/portfolio1.html");
};
您需要使用 .onclick 或 onclick 属性。它们都需要一个处理程序函数,而您传递的只是 运行 您的 changeMainFrame 函数(空)的结果。将其包装在 function() { }
中会产生您预期的结果。
function changeMainFrame(srcURL){
var target = document.getElementById("mainFrame");
target.src = srcURL;
}
document.getElementById("portfolio1").onclick = function(){changeMainFrame('https://codepen.io')}
<div id="portfolio1">go to codepen.io</div>
<iframe id="mainFrame" src="https://example.com"></iframe>