Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 运行JS函数一次_Javascript_Html - Fatal编程技术网

Javascript 运行JS函数一次

Javascript 运行JS函数一次,javascript,html,Javascript,Html,我有一个JS函数: <script type="text/javascript"> var counter = <?php echo $oak; ?>; function myFunction() { counter++; document.getElementById('countervalue'

我有一个JS函数:

<script type="text/javascript">
                    var counter = <?php echo $oak; ?>;
                    function myFunction() {
                        counter++;
                        document.getElementById('countervalue').innerHTML = counter;
                    }
                </script>
<img src="http://www.pbpixels.com/x/images/oak.png  " onclick="loadXMLDoc(this.outerHTML); myFunction(this)" />

function myFunction(elm) {
    elm.onclick = null; // Remove the onclick
    counter++;
    document.getElementById('countervalue').innerHTML = counter;
} 

var计数器=;
函数myFunction(){
计数器++;
document.getElementById('countervalue')。innerHTML=counter;
}
单击图像后会触发此功能。我的问题是,我希望它只在第一次按下图像时触发。有什么想法吗?提前谢谢

html代码:

<div class="cut_oak_tree">
            <img src="http://www.pbpixels.com/x/images/oak.png" onclick="loadXMLDoc(this.outerHTML), myFunction()" /> <!--DO NOT CHANGE SRC -->
            <br>
            <img src="http://www.pbpixels.com/x/images/oak.png " onclick="loadXMLDoc(this.outerHTML), myFunction()" /> <!--DO NOT CHANGE SRC -->
            <img src="http://www.pbpixels.com/x/images/oak.png  " onclick="loadXMLDoc(this.outerHTML), myFunction()" /> <!--DO NOT CHANGE SRC -->
        </div>



我会创建一个名为
isClicked
的变量,在加载页面时将其设置为
false
,然后在单击图像时将其设置为
true
。然后在递增计数器之前,编写一条
if
语句,确保
isClicked
false

<script type="text/javascript">
        var counter = <?php echo $oak; ?>;
        var isClicked = false;
        function myFunction() {
            if (isClicked === false){
                isClicked = true;
                counter++;
            }
        document.getElementById('countervalue').innerHTML = counter;
    }
</script>

var计数器=;
var isClicked=false;
函数myFunction(){
如果(isClicked==假){
isClicked=true;
计数器++;
}
document.getElementById('countervalue')。innerHTML=counter;
}

我会创建一个名为
isClicked
的变量,在加载页面时将其设置为
false
,然后在单击图像时将其设置为
true
。然后在递增计数器之前,编写一条
if
语句,确保
isClicked
false

<script type="text/javascript">
        var counter = <?php echo $oak; ?>;
        var isClicked = false;
        function myFunction() {
            if (isClicked === false){
                isClicked = true;
                counter++;
            }
        document.getElementById('countervalue').innerHTML = counter;
    }
</script>

var计数器=;
var isClicked=false;
函数myFunction(){
如果(isClicked==假){
isClicked=true;
计数器++;
}
document.getElementById('countervalue')。innerHTML=counter;
}
添加一个标志

function myFunction() {
    if(!myFunction.invoked){
       counter++;
       document.getElementById('countervalue').innerHTML = counter;

       myFunction.invoked = true;
    }
}

myFunction.invoked = false;
添加标志

function myFunction() {
    if(!myFunction.invoked){
       counter++;
       document.getElementById('countervalue').innerHTML = counter;

       myFunction.invoked = true;
    }
}

myFunction.invoked = false;
尝试:

在事件调用上添加
this
onclick=“myFunction(this)”
),那么您的函数将看起来像
function myFunction(img){
。然后在其中删除它的
单击
处理程序:

img.onclick = null;
最终结果是:

function myFunction(img) {
    counter++;
    document.getElementById('countervalue').innerHTML = counter;
    img.onclick = null;
}
还有一个图像示例:

<img src="http://www.pbpixels.com/x/images/oak.png  " onclick="myFunction(this)" />

我不会使用像@SLoW建议的那样的
布尔值
,因为那样你就无法知道已经单击了哪个图像。要做到这一点,你必须使用一个对象并存储每个图像
id
-或类似的东西-及其
单击的
状态。

尝试:

在事件调用上添加
this
onclick=“myFunction(this)”
),那么您的函数将看起来像
function myFunction(img){
。然后在其中删除它的
单击
处理程序:

img.onclick = null;
最终结果是:

function myFunction(img) {
    counter++;
    document.getElementById('countervalue').innerHTML = counter;
    img.onclick = null;
}
还有一个图像示例:

<img src="http://www.pbpixels.com/x/images/oak.png  " onclick="myFunction(this)" />


我不会使用像@SLoW建议的那样的
布尔值,因为那样你就无法知道哪个图像已经被点击了。要做到这一点,你必须使用一个对象并存储每个图像
id
-或类似的东西,以及它的
点击
状态。

通过发送你点击的元素来删除onclick处理程序o职能:

<script type="text/javascript">
                    var counter = <?php echo $oak; ?>;
                    function myFunction() {
                        counter++;
                        document.getElementById('countervalue').innerHTML = counter;
                    }
                </script>
<img src="http://www.pbpixels.com/x/images/oak.png  " onclick="loadXMLDoc(this.outerHTML); myFunction(this)" />

function myFunction(elm) {
    elm.onclick = null; // Remove the onclick
    counter++;
    document.getElementById('countervalue').innerHTML = counter;
} 

函数myFunction(elm){
elm.onclick=null;//删除onclick
计数器++;
document.getElementById('countervalue')。innerHTML=counter;
} 

通过将单击的元素发送到函数,删除onclick处理程序:

<script type="text/javascript">
                    var counter = <?php echo $oak; ?>;
                    function myFunction() {
                        counter++;
                        document.getElementById('countervalue').innerHTML = counter;
                    }
                </script>
<img src="http://www.pbpixels.com/x/images/oak.png  " onclick="loadXMLDoc(this.outerHTML); myFunction(this)" />

function myFunction(elm) {
    elm.onclick = null; // Remove the onclick
    counter++;
    document.getElementById('countervalue').innerHTML = counter;
} 

函数myFunction(elm){
elm.onclick=null;//删除onclick
计数器++;
document.getElementById('countervalue')。innerHTML=counter;
} 

如果您对jquery方法感兴趣,可以使用.one()!

var计数器=
$(“.cut_oak_tree img”).one(“单击”,函数(){
计数器++;
$(“#计数器值”)。文本(计数器);
});

如果您对jquery方法感兴趣,可以使用.one()!

var计数器=
$(“.cut_oak_tree img”).one(“单击”,函数(){
计数器++;
$(“#计数器值”)。文本(计数器);
});


如何设置在图像单击时调用此函数?向我们显示此代码。一个用于跟踪是否已单击的布尔值?从图像中删除单击处理程序?编辑的html代码和好主意^@user3287771如果标记为true,则也可以编辑函数体,使其不执行任何操作。如何设置此函数的调用方式图像单击?显示此代码。一个用于跟踪是否单击的布尔值?从图像中删除单击处理程序?编辑的html代码和好主意^@user3287771,而不是删除单击处理程序。如果标志为trueWorks perfect,则还可以编辑函数体,使其不执行任何操作。唯一的问题是,我有三个使用相同标记的图像函数,每次按下一个图像时,它必须向上计数1。有什么想法吗?我假设你想分别跟踪每个图像的点击?使用布尔方法,可能是一个布尔数组,每个跟踪,或者使用@DontVoteMeDown的方法,将img作为参数传递给函数并删除点击处理程序。这就是这似乎很有效。效果很好,唯一的问题是我有三张图像使用相同的函数,每次按下一张图像都要加1。有什么想法吗?谢谢,我假设你想分别跟踪每张图像的点击?使用布尔方法,可能是一组布尔值,每一个都跟踪,或者使用@DontVoteMeDown的方法h将img作为参数传递给函数并删除单击处理程序。这似乎很有效。很好,它几乎成功了,我的问题是,如果你足够快地按下图像,它在删除图像之前仍然会向上计数1:o因此,基本上你可以从同一个图像中获得5次单击tree@user3287771但是你的pos机上什么都没有I don’我不是说要删除图像。所以我不能对它说什么。试着将img.onclick.null移到计数器++上方,看看这是否有帮助。谢谢@SLoW完成了这项工作,谢谢DontVoteMeDown!很好,它几乎成功了,我的问题是,如果你按图像的速度足够快,它之前仍然会向上计数1