タグの間に入れられたすべてのテキストを書き込むことになっているJavaScript関数「doAll」があり<p>, </p>
ます。私のコードでは、2 つの方法で使用されます。
ページの最後で呼び出すだけで正しく動作します。ただし、クリックボタンイベントが発生したときにもトリガーする必要があります。何らかの理由で、今回は行うべきことを行いません。ボタンを 1 回クリックすると、最初の<p>...</p>
html 要素の内部 html が出力されます。
私の質問は、これら 2 つの状況で動作が異なる理由と、この問題を解決するにはどうすればよいかということです。
<!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