JS / JQUERY不更新string数组值
我正在面对一个我正在创build的Web应用程序的问题。
我使用node.js
作为后端,服务器发送(使用socket.io
)这样的string“ 0010000110 0
”。
在客户端我有:
$(document).on("pageinit", function(){ var socket = io.connect('http://localhost:8080'); var tmpData = []; socket.on('recData', function(data){ tmpData = data; //here I put the received string in the tmpData array }); //checking for the string array state $("#deskLight-1").on("vclick", function(){ if(tmpData[2] == '1'){ tmpData[2] = '0'; alert(tmpData); } else if(tmpData[2] == '0'){ tmpData[2]='1'; alert(tmpData); } }); });
所以这个想法是打开/closures灯。 这只是代码的一部分,所以我们只关注tmpData[2]
。
如果条件工作正常,警报对话框只显示旧的tmpDatastring(所以这一个0010000110 0
)。 它应该改成这个00**0**0000110 0
我不明白为什么tmpData[2] = '0'
或tmpData[2] = '1'
不更新索引值。 有任何想法吗?
JavaScript中的string是不可变的:
var str = '123'; str[1] = 'x'; console.log(str); // '123'
您似乎想要将数据用作字符数组,因此将其存储为数组:
socket.on('recData', function(data){ tmpData = data.split(''); // array of characters });
如果您需要(更新的)string,请记住将字符连接在一起:
console.log(tmpData.join(''));