Javascript 只执行一次函数

Javascript 只执行一次函数,javascript,onclick,Javascript,Onclick,我读了这篇文章并尝试使用Ted Hopps方法 但似乎我不能让它正常工作。我想通过onclick=“function()”在图像上使用JS创建一个div。但我只想做一次 function runOnce(f){ var executed = false; return function () { if (!executed) { executed = true; return f.apply(t

我读了这篇文章并尝试使用Ted Hopps方法

但似乎我不能让它正常工作。我想通过onclick=“function()”在图像上使用JS创建一个div。但我只想做一次

 function runOnce(f){           

    var executed = false;
    return function () {
        if (!executed) {
            executed = true;
         return f.apply(this,arguments);
        }
    };
}
function rollover() { 
var new1=runOnce(myfunction);
new1(1);
} 

function myfunction(){


var tr1 = document.createElement("tr1");
tr1.style.width = "50%";
tr1.style.height = "100%";
tr1.style.background = "red";
tr1.style.color = "white";
tr1.style.right= "0px"
tr1.style.top= "0px"
tr1.style.padding= "2%"
tr1.style.opacity= "0.6"
tr1.style.position = "fixed";
tr1.innerHTML = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum";

document.body.appendChild(tr1);



}
我从onclick调用rollover函数

<img class="trans01button" onclick="rollover(1)" src="images/backgroundfragments_03.jpg" alt="Translation games" >

我的问题是它仍然多次执行该函数。
我在这里做了一个jfiddle,但是当我的dreamweaver版本工作时,我不能让它工作。我的意思是我甚至不能让“myfunction”div出现,而我的问题是每次单击图像时它都会执行

您需要移动此行:
var executed=false超出功能范围


因为始终当您进入
runOnce
函数时,您在
滚动中将yout flag设置为false

,您每次都在创建一个新的
runOnce
,此时您应该使用
runOnce(myfunction)的结果
作为单击时调用的函数。当然不能,因为代码中有错误。只要看看控制台。在这里您可以找到更新的JSFIDLE:出了什么问题,我看不出来。上面说翻滚没有定义,但我看不出这两个小提琴有什么不同?很高兴听到这个。你现在明白你提出了什么样的问题了吗?我想是的,我每次都将runOnce初始化为false,这意味着每次调用时它都必须执行。