Почему Mozilla FF не обновляет innerHTML? - PullRequest
1 голос
/ 25 ноября 2010

Я пытаюсь динамически изменить CSS элемента HTML ... для этой цели я использую innerHTML.

Проблема, с которой я сталкиваюсь, может быть, Mozilla помнит innerHTML текстовой области при первой публикации. Поэтому, если пользователь редактирует текст в textarea, он не отображает новый текст и отображает оригинальный текст в textarea. В IE работает нормально.

Что не так с innerHTML и Mozilla Firefox?

<html>
<head>
<title></title>
<script type="text/javascript">
function abc()
{
    alert(document.getElementById("c").innerHTML);
}
</script>
</head>
<body>
<textarea id="c" onclick="abc()">hello...</textarea>
</body>
</html>

Ответы [ 5 ]

4 голосов
/ 25 ноября 2010

использовать .value для TextArea

1 голос
/ 25 ноября 2010

не может содержать дочерние элементы, но значение.

Элементы / значение внутри обрабатываются как обычный текст, а не как HTML.

Вы должны использовать свойство value, чтобы получить его содержимое.

использование:

document.getElementById('c').value
1 голос
/ 25 ноября 2010

Что касается вашего требования, почему бы вам просто не сделать:

document.getElementById("c").className = "myCSSClass";

потому что использование innerHTML для изменения класса CSS элемента кажется довольно странным ...

0 голосов
/ 25 ноября 2010

Всегда используйте свойство value для изменения значения <textarea>.

Кажется распространенным заблуждением, что innerHTML является жизнеспособным или даже лучшим способом сделать это. Это ни то, ни другое.

Что происходит, так это то, что изменение свойства innerHTML текстовой области будет работать только до тех пор, пока значение не будет изменено, либо пользователем, редактирующим содержимое текстовой области, либо скриптом, изменяющим свойство value, поскольку узлы элемента textarea представляют только его начальное значение.

Это не имеет ничего общего с соответствием стандартам или иным образом innerHTML, или то, что только один текстовый узел является допустимым в элементе <textarea>: вы получаете точно такое же поведение, если пытаетесь изменить nodeValue свойство текстового узла, содержащегося в элементе <textarea>.

0 голосов
/ 25 ноября 2010

Почему вы хотите использовать innerHTML?innerHTML используется для динамического вставления содержимого в определенный тег с помощью id.

, который вы можете использовать alert(document.getElementById("c").value);

...