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