私はverses
という名前の配列を持っています。この配列には、ajaxレスポンスから作成された文字列が含まれています。配列は、このように作成されます。Javascriptを挿入する奇妙なnewLine文字
verses.push(splitStr[i].replace('\n',''));
後、私はいくつかの<span>
要素を作成し、配列から値を追加します。しかし配列の最後の要素は、ASCIIで隠されたnew line
文字を含んでいるため、常に奇妙な動作をします。コードは10
です(コンソールでチェックされています)。今度はコンソールログの最後の要素を配列aから出力すると、この結果が得られます:"string"
。
"string
"
スパンを作成するとき、それは常にこの奇妙なnew line
文字を挿入するためです。そして、私は私が手スパンから値を返す取得する場合、後でこの文字列が含まれており、span要素を作成します。したがって、ソースコードの範囲は次のようになります。
<span class="answer" onclick="checkAnswer(this)">potopului
</span>
閉じるタグが次の行にあることがわかります。コンソールで
私はいくつかのブレークポイントを使用して、私はスパンから抽出し、この値ました:"string↵"
は今、このスパンを作成するときにnew line
文字を挿入し、なぜそれがでのみ起こるんjavascriptの理由の任意のアイデアを誰が持っています配列の最後の要素ですか?
スパン要素を作成するために使用されるコード:
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]+":");
}
あなたは*すべての*改行をスクラブしたい場合、それは '' .replace(/ \ N/gで、 '')です - あなたのコードは、**交換されます最初の**改行。 – Pointy
'.replace(/ \ n \ r | \ n | \ r/g、 '')'を試してください – MysterX
ありがとう、@MysterX!それはうまくいった! –