2015-12-22 2 views
0

Так скажем, у меня есть этот <div> элемент:Является ли этот innerHTML взлом «действительным»?

... 
<div id="me"></div> 
... 

Тогда у меня есть сценарий вроде этого:

var me = document.getElementById("me"); 

me.innerHTML = '<span color="#00F">Hello!'; 

Является ли это сценарий плохой «взломать» или нет, то почему я должен написать/у меня даже написать:

me.innerHTML = '<span color="#00F">Hello!</span>'; 

, с окончанием </span> вместо этого?

+0

* Вы можете * но * не должны *. То есть, если вы заботитесь о стандарте HTML. – Alternatex

+0

@Alternatex Почему я могу, когда не должен, я имею в виду, что люди думали, кто написал метод innerHTML? Они подумали: «О, давай сделаем так же сложно, как это возможно, возможно, это отладка! Отличная идея!» – super

+0

Во многих случаях браузер достаточно умен, чтобы узнать, когда тег должен быть закрыт. Однако это не всегда так. И браузерные двигатели работают по-разному. Вы бы задали этот вопрос, если бы у вас была возможность развиваться для старых браузеров IE. – dfsq

ответ

3

Вставка html как '<span color="#00F">Hello!'; - это плохая практика, хотя основные браузеры автоматически добавят закрывающий тег.

Чтобы всегда быть последовательным, оберните html закрывающим тегом.

Из комментария:

Тогда почему это плохо, если браузер автоматически добавит закрывающий тег?

Прежде всего, вы заставляете браузер делать то, что требует много времени, и не все браузеры должны работать так.

+0

Тогда почему это плохо, если браузер автоматически добавит закрывающий тег? – super

+0

Является ли этот закрытый тег закрытия чем-то новым, как в HTML5? – super

+0

нет, это не самозакрывающееся :) само закрытие было бы '' –

1

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

0

Возможно, вы можете изменить курс.

в этом;

Пример

var me = document.getElementById('mykey'); 
    me.innerHTML = '<span color="#0FF" />'; 
    me.getElementsByTagName('span')[0].innerText = 'Hello'; 
+0

Прохладный раствор! – super

+0

необходимо соблюдать стандарты :) – AhbapAldirmaz

+1

Это не соответствует стандартам. Он по-прежнему заполняет недействительный HTML ('span' не имеет атрибута color и не является элементом void) в' innerHTML' и в зависимости от браузеров для выполнения восстановления ошибок. – Quentin

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