javascript - 只执行一次函数

标签 javascript onclick

我读了这个线程并尝试使用 Ted Hopps 方法 Function in javascript that can be called only once

但是我好像不能让它正常工作。我想通过 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 出现,而​​我的问题是每次我单击图像时它都会执行。

最佳答案

您需要将此行:var executed = false; 移到 runOnce 函数范围之外。

Workind DEMO

因为当您进入runOnce 函数时总是,您将标志设置为false

关于javascript - 只执行一次函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16876653/

相关文章:

javascript - 从剪贴板内容制作 URL 的书签

javascript - 修复 Javascript 中的反射 XSS 问题。 CheckMarx

javascript - Angularjs 用它的 alt 替换图像

javascript - 将具有特定类的所有 Font Awesome 5 图标更改为另一个 FA 图标 - JS/SVG

javascript - 每当调整浏览器大小时,点击事件都会多次触发

android - 多个按钮同时启动多个 Activity

javascript - 缩放然后缩放到顶部?

Javascript 从数组中检索购物车的值?

javascript - 有没有办法通过单击不同的 div 来更改功能?

javascript - 使用 jQuery 到 'click' 一个 li 元素