У меня есть массив с именем verses
, который содержит строки, созданные из ответа ajax. Массив создается следующим образом:Вставка javascript weird newLine
verses.push(splitStr[i].replace('\n',''));
Позже я создаю некоторые <span>
элементы и добавить значения из массива. Однако последний элемент из массива всегда имеет странное поведение, потому что он содержит скрытый символ new line
в ASCII, он имеет код 10
(проверено, что в консоли). Теперь, когда я печатаю в консоли, последний элемент из массива получает этот результат: "string"
. Затем я создаю элемент диапазона, который содержит эту строку, а затем, когда я получить обратно значение из диапазона, я получаю:
"string
"
Это потому, что при создании пяди всегда вставляет этот странный new line
характер. Таким образом, в исходном коде диапазон выглядит следующим образом:
<span class="answer" onclick="checkAnswer(this)">potopului
</span>
Вы можете видеть, что закрывающий тег находится на следующей строке.
В консоли я использовал некоторые точки останова, и я получил это значение, извлеченное из диапазона: "string↵"
Теперь, есть кто-нибудь какие-либо идеи, почему при создании этого пяди Javascript вставляет new line
характер и почему это происходит только с последний элемент из массива?
Код, используемый для создания элементов пролетных:
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]+":");
}
Если вы хотите, чтобы вычистить * все * новой строки, это '.Надеть (/ \ п/г,«»)' - ваш код только замена ** первая ** новая линия. – Pointy
попробуйте '.replace (/ \ n \ r | \ n | \ r/g, '')' – MysterX
Спасибо, @MysterX! Это сработало! –