[英]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.