簡體   English   中英

JQuery腳本中的XOR值

[英]XOR value in JQuery script

我有一個小腳本,需要一個值進行異或。 有人指出了操作方法,但此后我更改了腳本,他的建議在這里不再適用。

<input type='button' value='Ein / Aus' class='taster' csv='Lampe' />        

<script>            
    $(document).on('click', 'input.taster', function() {

        // Get ID from Input
        var id = $(this).attr('csv');

        $.get('plc.php?function=csv&id=' + id, function(data){
            var csv = data.split(',');

            //Output
            var out = csv[1];

            //Write
            var wdatatyp = csv[2];
            var wdb = csv[3];
            var wbyte = csv[4];
            var wbit = csv[5];      
            var bitval = csv[6];

            //Read
            var rdatatyp = csv[7];
            var rdb = csv[8];
            var rbyte = csv[9];
            var rbit = csv[10];

            $(document).load('plc.php?function=write-bit', {'wdatatype':wdatatyp, 'wdb':wdb, 'wbyte':wbyte, 'wbit':wbit, 'bitval':bitval}); 

            function read() {               
                $(out).load('plc.php?function=read-bit', {'rdatatype':rdatatyp, 'rdb':rdb, 'rbyte':rbyte, 'rbit':rbit});                    
            }
            setTimeout(read, 100);                  
        });             
    });         
</script>

進行一些清理並更好地描述需要發生的情況。

從csv文件中提取了csv [6],並將始終返回1。

所以我需要的是第一次調用該腳本,bitval需要返回1。下次需要返回0,然后是1,然后是0,依此類推。

您需要bitval轉換為int然后再對其進行XOR。 所以更換線

var bitval = csv[6];

var bitval = parseInt(csv[6]);

然后可以通過以下方式進行切換(通過將bitval聲明移出onClick處理程序):

var bitval = null; // this is crucial since you don't have another place to store the value
$(document).on('click', 'input.taster', function() {
    var id = $(this).attr('csv');
    $.get('plc.php?function=csv&id=' + id, function(data){
        // your variables
        if (bitval == null) { // initial set
            bitval = parseInt(csv[6]); // was 'var bitval = csv[6]'
        }
        // your load code
        bitval ^= 1; // toggle
    });
});

如Artjom所述,您需要將其轉換為數字,因為.split()返回字符串。

var bitval = Number(csv[6]);

您可以在同一步驟中執行XOR運算

var bitval = Number(csv[6]) ^ 1;

在無法將值轉換為數字的情況下,Number函數將返回NaN (非數字)。 NaN ^ 1等於1。如果該結果不理想,則可以進行類型檢查:

var bitval = Number(csv[6]);
if (isNaN(bitval)) {
    bitval = ...;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM