[英]Javascript inserting weird newLine character
我有一个名为verses
的数组,其中包含从ajax响应创建的字符串。 数组是这样创建的:
verses.push(splitStr[i].replace('\n',''));
稍后,我创建一些<span>
元素,并将值附加到数组中。 但是,数组中的最后一个元素总是有一个奇怪的行为,因为它包含一个ASCII隐藏的new line
,它的代码为10
(已在控制台中进行了检查)。 现在,当我在控制台中打印日志时,数组中的最后一个元素将得到以下结果: "string"
。 然后,我创建包含此字符串的span元素,稍后当我从span取回值时,我得到:
"string
"
那是因为在创建跨度时,它总是插入这个奇怪的new line
。 因此,在源代码中,跨度如下所示:
<span class="answer" onclick="checkAnswer(this)">potopului
</span>
您可以看到结束标记在下一行。
在控制台中,我使用了一些断点,并从span中提取了此值: "string↵"
现在,有谁知道为什么在创建此span javascript时会插入new line
以及为什么仅在数组中的最后一个元素上会发生这种情况?
用于创建span元素的代码:
for (var i = 0; i < 3; i++) {
if (i!=phtml) {
tags.push("<span class='answer' onclick='checkAnswer(this)'>"+generateRandom(pos)+'</span>');
//generate a string from the array different from the one with position pos
}else{
tags.push("<span class='answer' onclick='checkAnswer(this)'>"+verses[pos].replace('\n','')+'</span>');
}
}
var output='';
for (var i = 0; i < tags.length; i++) {
output = output + tags[i];
}
document.getElementsByClassName('v-options')[0].innerHTML = output;
checkAnswer()
函数:
function checkAnswer(e){
var text = e.innerHTML;
var input = document.getElementsByClassName('hidden-word')[pos];
if (text == verses[pos]) {
input.value = verses[pos];
input.setAttribute('disabled','');
}
console.log(":"+text.substring(0, text.length-1) + ":"+verses[pos]+":");
}
有时换行符以不同的样式打印。 通常,它是两个特殊字符\\n
和\\r
的组合,因此您只需要检查所有可能的换行符组合类型或丢失的破损部分。 尝试更改您的RegExp
以使其全部匹配:
splitStr[i].replace(/\n\r|\n|\r/g, '')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.