1

我阅读了这个线程并尝试 在 javascript 中使用 Ted Hopps 方法 Function 只能调用一次

但似乎我无法使其正常工作。我想通过 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 调用翻转功能

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

我的问题是它仍然多次执行该功能。我在这里做了一个 jfiddle http://jsfiddle.net/RE3fp/但是我的dreamweaver 版本工作时我不能让它工作。我的意思是我什至无法使“myfunction” div 出现,而​​我的问题是每次单击图像时它都会执行。

4

1 回答 1

2

您需要移动这一行:var executed = false;超出runOnce功能范围。

工作演示

因为当你进入函数内部时,你总是runOnce将你的标志设置为false

于 2013-06-01T20:02:37.187 回答