У меня есть функция javascript 'doAll', которая должна писать весь текст, который был помещен между тегами <p>, </p>
. В моем коде он используется двумя способами.
Он работает правильно, когда я просто вызываю его в конце страницы. Однако он также должен срабатывать при возникновении события кнопки клика. По какой-то причине он не делает то, что он должен делать в этот раз. Когда один щелчок на кнопке, он просто печатает внутренний html самого первого элемента <p>...</p>
html.
Мой вопрос в том, почему он работает по-разному в этих двух ситуациях и что мне делать, чтобы исправить эту проблему.
<!DOCTYPE html>
<html>
<head>
<script>
function returnList(x)
{
return document.getElementsByTagName(x);
}
function writeList(x)
{
var i = 0;
while (x[i])
{
document.write(x[i++].innerHTML + '<br/>');
}
}
function doAll(x)
{
writeList(returnList(x));
}
</script>
</head>
<body>
<p>XXX</p>
<p>YYY</p>
<div style = 'background-color: gray;'>
<p>YYY</p>
<p>XXX</p>
</div>
<button type = 'button' onclick = "doAll('p')">
Click me!
</button>
<script>
document.write('<br/>');
doAll('p');
</script>
</body>
</html>
Вот "выход":
XXX
YYY
YYY
XXX
XXX
YYY
YYY
XXX
И вот что можно увидеть после нажатия кнопки:
XXX