Javascript 来自Array.join()的不同结果
请看以下代码:Javascript 来自Array.join()的不同结果,javascript,join,push,Javascript,Join,Push,请看以下代码: var words = []; var temp_words =[]; var div = document.getElementById('div'); document.onkeypress = function(evt) { evt = evt.keyCode; var event = String.fromCharCode(evt); // alert(event); temp_words.push(event);
var words = [];
var temp_words =[];
var div = document.getElementById('div');
document.onkeypress = function(evt) {
evt = evt.keyCode;
var event = String.fromCharCode(evt);
// alert(event);
temp_words.push(event);
var w = temp_words.join("");
words.push(w);
}
HTML
现在在谷歌控制台我看到了结果
如果我输入文本区域sanmevg saini,则单词
数组返回:
["s", "sa", "san", "sanm", "sanme", "sanmev", "sanmevg", "sanmevg ", "sanmevg s", "sanmevg sa", "sanmevg sai", "sanmevg sain", "sanmevg saini"]
非[“sanmevg saini”]
如果我写[''a,'b','c',''d'].join('''')
,那么它将返回预期的结果,即['abcd']
。那么我的代码有什么问题呢?每次按下一个键,另一个单词就会添加到单词数组中。只需使用words=temp_words.join(“”)
没有必要使用var temp_这个词,var这个词就足够了。单词数组会在每次按键时存储临时单词的合并值,以便获得错误的值。代码应如下所示:
<textarea id="div"></textarea>
<script>
var words = [];
var temp_words =[];
var div = document.getElementById('div');
document.onkeypress = function(evt){
evt = evt.keyCode;
var event = String.fromCharCode(evt);
words.push(event);
div.innerHTML = words.join("")
}
</script>
var-words=[];
var temp_words=[];
var div=document.getElementById('div');
document.onkeypress=功能(evt){
evt=evt.keyCode;
var event=String.fromCharCode(evt);
推(事件);
div.innerHTML=words.join(“”)
}
我为您写了一篇JSFIDLE:
顺便说一句,你的代码很难看,缩进是错误的,你的代码应该和你女朋友一样漂亮。检查临时单词的内容temp\u单词中的内容是[“s”,“a”,“n”,“m”,“v”,“e”,“g”,“s”,“a”,“i”,“n”,“i”]
而不是单词。按(w)
,试试单词=w.split(“”)
;“w”的内容如何?谢谢迪亚兹先生和科里爵士对我问题的关注。然后只需words=[temp\u words.join(“”)]
。只是我看不到只有一个值的数组的点。@openorclose:是的,这是真的。在这种情况下,拥有任何数组都毫无意义。只是一个附加了字符的words
变量。但是,除非需要某种历史记录,否则事件似乎应该将值直接从文本框复制到其目的地。