Javascript Вопрос относительно appendChild - PullRequest
1 голос
/ 27 июня 2011

Я только изучаю javascript, и мне просто интересно, почему это не работает.Я создал кнопку, и когда она нажата, я назначил функцию, которая должна добавлять текст ко всем моим абзацам.Я не знаю, почему это не работает:

<html>
<head>
<title>javascript test</title>
</head>
<body>
<script language="javascript" type="text/javascript">

function appendStuff(){
 var node = document.getElementsByTagName("P");
 node.appendChild.createTextNode('Here's some text');

 return true;
 }

</script>
<noscript>
Your browser doesn't support javascript.
</noscript>

<input type="submit" value="click me" onclick="appendStuff();" />

<p>
This is the first paragraph.
</p>

<p>
This is the second paragraph.
</p>

<p>
This is the third paragraph.
</p>

</body>
</html>

Ответы [ 6 ]

2 голосов
/ 27 июня 2011

вы должны передать новый узел в качестве аргумента методу appendChild, как здесь:

var nodes = document.getElementsByTagName("P");
for(var i=0; i<nodes.length; i++) {
   nodes[i].appendChild(document.createTextNode("Here's some text"));
}
0 голосов
/ 27 июня 2011
> <script language="javascript"
> type="text/javascript">

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

> function appendStuff(){   var node = document.getElementsByTagName("P");  
>   node.appendChild.createTextNode('Here's some text');
>   return true;
> }

Как уже отмечали другие, getElemetsByTagName возвращает живой NodeList , который имеет свойство длины и члены которого могут быть доступны по индексу. Обратите внимание, что хотя он похож на массив, он не является массивом.

Текстовый элемент может быть добавлен к первому узлу в NodeList с помощью:

  node[0].appendChild(document.createTextNode("Here's some text"));

Однако гораздо безопаснее сначала увидеть, существует ли node[0], прежде чем пытаться вызвать один из его методов.

> <noscript> Your browser doesn't
> support javascript. </noscript>

Тот факт, что браузер отображает элемент noscript , не обязательно означает, что браузер не поддерживает javascript. Описание элемента noscript включает в себя:

The NOSCRIPT element allows authors to provide 
alternate content when a script is not executed.

W3C, HTML4.01 , §18.3.1

> <input type="submit" value="click me"
> onclick="appendStuff();" />

Входные данные с типом отправки должны быть в форме и использоваться для отправки формы. Более подходящее значение для атрибута типа здесь - «кнопка». И закрывающий тег в стиле XML не нужен.

0 голосов
/ 27 июня 2011
function appendStuff(){
     var node = document.getElementsByTagName("P");
     var txt = 'Here is some text';
     var newT = document.createTextNode(txt);
    node.appendChild(newT);
     return true;
     }

Попробуйте вышеуказанный метод !!!!

0 голосов
/ 27 июня 2011

Попробуйте это

<html>
<body>
<script language="JavaScript">
function function11() {
   var myNode = document.createTextNode("New Text Node");
   document.body.appendChild(myNode);
}
</script>
<button onclick="function11();">Create text node</button>
</body>
</html>
0 голосов
/ 27 июня 2011

document.getElementsByTagName возвращает «массив» извлеченных doms, а не одного dom.так что вам нужно указать одну dom с циклом for этого массива или что-то еще.

0 голосов
/ 27 июня 2011

document.getElementsByTagName возвращает список (массив) элемента вместо одного, вам нужно выбрать тот, который вы хотите добавить (т.е. узел [0])

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