スクリプト タグに id 属性を持たずに、現在実行中のスクリプト ノードの親ノードを取得する JavaScript の方法はありますか?
私が何を意味するかを説明するために、ドキュメントに img を追加したい場合、その画像を ID "div1_id" の div ノードに追加したい場合、div の ID を知らなくても、または追加する必要がなくても、それを行うことができますか?以下で行う必要があるように、スクリプトタグに id="_scriptid" 属性を追加しますか?
<script type="text/javascript">
function fn1()
{
var my_img = document.createElement("img");
var t = document.getElementById("_scriptid");
if (t.parentNode) {
t.parentNode.appendChild(my_img);
} else {
document.getElementsByTagName("body")[0].appendChild(my_img);
}
}
</script>
<div id="_div1_id" name="_div1_name">
<script type="text/javascript" id="_scriptid">
fn1();
</script>
</div>
これが私がやりたいことです:
<head>
<script type="text/javascript">
function fn1()
{
var my_img = document.createElement("img");
var x = get the node that is the parent node of the current script tag,
and so that I can still separate this code out into a function
as shown here, I do not want the <head> tag returned, I want to
get the parent node of the script that called this function, i.e.
the node commented as "div1" below.
x.appendChild(my_img);
}
</script>
</head>
<div> <!-- div1 -->
<script type="text/javascript">
// Call a function to add an image to the enclosing node (div node in this example):
fn1();
</script>
</div>
私が尋ねる理由は、IE8 で「HTML 解析エラー: 子要素が閉じられる前に親コンテナー要素を変更できません (KB927917)」というエラーが発生していると誰かに言われているからです。 appendChild を使用して画像を body 要素に追加し、body 要素が閉じられていない。KB の記事では、直接の親に追加すると (そのタグが明らかに閉じられていなくても) 問題が解決することが示唆されています。
ありがとう。