那么,这就是问题所在。我使用onclick事件来触发函数,因此每次单击时,您将在div的原始innerHTML和另一个变量之间切换。当我将testfunction指定为回调时,它可以工作。以下是代码:
var c = '';
function testfunction()
{
var a = this.innerHTML;
var b = 'blah';
if (a !== b)
{
c = a;
return this.innerHTML = b;
}
else
{
return this.innerHTML = c;
}
window.onload = function()
{
document.getElementById('rightcontent').onclick = testfunction;
}
我理解c因为它的全局作用域而保留了它的值。但我不明白的是,当我将函数放入匿名回调中时,为什么c会返回undefined,如下所示:
windows.onload = function()
{
document.getElementById('rightcontent').onclick = function()
{
this.innerHTML = testfunction();
}
}
这些都是没有实际意义的,我只是在胡闹……但我想知道底层发生了什么。
如果这已经在其他地方有涉及,请原谅我,我已经查看了一些帖子,但是找不到答案。
提前感谢 :-)
[javascript] this作用域
或类似内容。 - user166390testfunction
函数内设置window.onload
? - Justin Morganwindow.onload
会在文档加载完成后运行。因此,如果您在该事件之后的任何时间调用testfunction
,设置window.onload
将不起作用。我不知道您想做什么,虽然在DOM加载之前运行代码是可能的,但这并不是最常见的事情。 - Justin Morgan