2014-10-16 3 views
1

Я могу установить разрыв строки с javascript в элементе, но я не могу их прочитать.Обнаружение разрыва строки в тексте с помощью javascript

Пример:

<div id="text"></div> 

Js:

document.getElementById("text").innerHTML = "Hello <br /> World"; 
var x = document.getElementById("text").innerHTML; 

if(x == "Hello <br /> World") 
{ 
alert('Match'); 
} 

Там нет совпадения в моем случае ...

+1

Зачем вам это нужно в первую очередь? – frenchie

ответ

5

Это не очень много и не очень хорошая вещь, чтобы получить .innerHTML собственность от объект, а затем попытайтесь сравнить его с некоторой точной строкой. Это связано с тем, что единственным контрактом, который имеет браузер, является возврат к вам эквивалентного HTML, а не обязательно тот же HTML. Это не может быть проблемой, если в запросах нет вложенных элементов DOM, но часто может быть проблемой, если есть вложенные элементы HTML.

Например, некоторые версии IE будут изменять порядок атрибутов, изменить кавычки, изменить интервал, и т.д ...

Вместо этого, вы должны либо искать фактический DOM для того, что вы хотите, или искать только небольшая часть HTML, которую вы знаете, не может изменить или использовать алгоритм поиска, допускающий изменения в HTML.

Как Niels упоминалось в комментарии, Chrome, IE11 и Firefox возвращают "Hello <br> World", которые вы можете увидеть сами с простой констатации отладки, как это:

console.log("'" + x + "'"); 

Работа демо, чтобы увидеть для себя то, что он показывает: http://jsfiddle.net/jfriend00/zc59x2bL/


FYI, ваш код содержит ошибку. Вам необходимо передать document.getElementById() строку, которая будет document.getElementById("test"), а не document.getElementById(test).

+0

И, скорее всего, он корректно возвращает HTML5-стиль '
' вместо устаревшего стиля XHTML'
'. –

+0

@NielsKeurentjes Не должно ли это полностью зависеть от типа документа? – leemes

+1

Возможно, они вернут '
', если вы правильно вызвали режим XHTML с правильным doctype *** AND *** типа контента 'application/xhtml + xml'. Никогда не видел, чтобы кто-нибудь это делал, может стоить попробовать. В HTML4 + 5 и в режиме полу-XHTML с текстом/html правильная нотация - '
'. –

Смежные вопросы