多次调用时,JavaScript函数不起作用

Ranjit Singh Shekhawat

我正在创建一个用于检查id值是否为0或1的函数。该函数将执行以下任务(触发SMS功能):

1)如果在页面加载时,任何id的值为1(true),则此函数将不允许为此id触发短信,但如果value变为0(false),然后再次返回1(true),则会触发短信功能。

2)如果在页面加载时,id的值为0(false),则此函数将在任何时候将其值更改为1(true)时允许SMS触发。

注意:当我用value1value2value3分别检查此功能时,它工作正常。但是,当我对多个ID执行此功能时onloadcheck(value1); onloadcheck(value2);,会产生问题。没有错误,但无法正常工作。

请帮我。谢谢。

$(document).ready(function() {
setInterval(function() {
rand_val();
}, 1000);   

});


//check initial values of all ids 


var onloadcheck = (function() {
    var executed = false;
    var enableit = false;
    return function(x) {
        if (!executed) {
            executed = true;
            if(x==1){enableit = false;}
            if(x==0){enableit = true;}
        }
        if(x==1 && enableit ){
        console.log("Sending SMS");
        enableit = false;
        }
        if(x==0 ){
        enableit = true;
        }
    };
})();






//generates random values 
function rand_val(){
document.getElementById("demo1").innerHTML =
Math.floor(Math.random() * 2);
var value1= $("#demo1").text();

document.getElementById("demo2").innerHTML =
Math.floor(Math.random() * 2);
var value2= $("#demo2").text();


document.getElementById("demo3").innerHTML =
Math.floor(Math.random() * 2);
var value3= $("#demo3").text();

onloadcheck(value1);
onloadcheck(value2);


}

这是HTML代码:

<!DOCTYPE html>
<html>
<head>
        <meta charset="utf-8">
        <title>Test SMS</title>
<style>
</style>
</head>
<body>

        <p>Test SMS Triggers</p>

        <p id="demo1"></p>
        <p id="demo2"></p>
        <p id="demo3"></p>

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="index.js"></script>
</body>
</html>
TJ布莱克曼

之所以很难,是因为您需要获取其当前值并将其与先前的值进行比较。因此,您需要始终存储其先前值的副本。

在我的示例中,我将先前值的副本存储在一个对象中,然后每次进行更新时,我从对象中获取旧值,从元素中获取新值,然后将两者进行比较。然后不要忘记将新值保存在对象中!

JS菲德尔

<p id="demo1">1</p>
<p id="demo2">0</p>
<p id="demo3">0</p>

<button type="button">Update &amp; Re-Check Values</button>

<script>
// cache DOM elements for quick reference
var demo1 = $('#demo1');
var demo2 = $('#demo2');
var demo3 = $('#demo3');

// store their current values in object
// this is how we will reference their previous values in the future
var stored_values = {
  demo1: demo1.text(),
  demo2: demo2.text(),
  demo3: demo3.text()
}; 


// loop through all elements
// get their current value from .text()
// get their PREVIOUS value from the object we made above
// compare values with our custom compare function (define below)
// finally, save the current value in our object
function checkValues(){
    [demo1, demo2, demo3].forEach(function(item){
    var element_id = item.attr('id');
    var currentValue = item.text(); 
    var previousValue = stored_values[element_id];
        compareValues(currentValue, previousValue, element_id);
    stored_values[element_id] = currentValue; 
  });
}


// compare values passed in, and determine what to do
function compareValues(current, previous, elementID){
    if (previous == 0 && current == 1){
    alert('Sending SMS for '+ elementID + '!!!');
  } else {
    return; // do nothing
  }
}


// on button click
// assign new value, then checkValue()
$('button').click(function(){
    $('p').each(function(index, element){
        var number = Math.round(Math.random()); 
    $(element).text(number); 
  });
  checkValues(); 
});
</script>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在其他函数中调用时,Javascript函数不起作用

执行函数调用时,Onclick函数不起作用

JavaScript fadeOut函数在第二次调用时不起作用

在函数开始处调用时,ClearTimeout不起作用

两次调用时Java函数不起作用

从嵌套函数调用时,compadd不起作用

解析CloudCode函数不起作用。调用时出现错误

调用我的Javascript函数不起作用

从外部javascript调用时,getJSON url方法不起作用

在onclick属性内使用时,JavaScript函数不起作用

从 EventListener 函数调用时,Javascript 重定向 (window.location.href) 在 Asp.NET Core 项目中不起作用

从systemd调用时ssh不起作用

从NSObject调用时,DBRestClient不起作用

从BroadcastReceiver调用时,startActivity不起作用

构造函数原型中新添加的函数在对象上调用时不起作用

dataSnapshot 函数不起作用 - 函数调用时应用程序崩溃

jQuery插件在页面中多次使用时不起作用

从函数外部调用变量不起作用 javascript

使用addCallback从javascript调用actionscript 3函数不起作用

JavaScript,Phaser:使用setTimeout调用函数-延迟不起作用

从js文件调用javascript函数不起作用

按钮onclick调用javascript函数不起作用

为什么此javascript函数调用不起作用?

基本的Javascript onclick函数调用不起作用

对 PHP 函数的 JavaScript Ajax 调用不起作用

ScaffoldMessenger.of(context).showSnackBar() 在小部件构建函数中直接调用时不起作用

从NodeJs 8.10 Lambda函数调用时,AWS DynamoDB deleteTable不起作用

为什么当从控制器中的不同函数调用时 view::make 不起作用?

使用 addEventListener 或 onclick 调用时函数不起作用,不显示任何错误消息