2

タグにテキストを追加しようとしていますが、エラーが発生し続けます

NOT_FOUND_ERR: DOM Exception 8
Error: An attempt was made to reference a Node in a context where it does not exist.

これがjavascriptです:

var getexp = document.getElementsByTagName("td")[219];
few lines of code here...
var fsptag = document.createElement('text');
fsptag.innerHTML = append1 +fspRound +append2 +ratioRound;

var fsptext = fsptag.innerHTML;
fsptag.appendChild(fsptext);
getexp.insertBefore(fsptag,getexp.childNodes[10]);

私はこれに不慣れです(ほんの数日)。私が理解していることからgetexp.childNodes[10]、の子ノードである必要がありますgetexp。そして、それは子ノードです。ここでの助けをいただければ幸いです。ありがとう。

編集:HTML

<td colspan=2>&nbsp;&raquo;&nbsp;
<b>Combat level: 20</b> (311855484)&nbsp;<font style='font-size:8px;color:#696156'>+13144516</font>
<BR><BR>&nbsp;&raquo;&nbsp;
<b>Troops ready:</b> 100% 
<BR>&nbsp;&raquo;&nbsp;
<b>Mana:</b> 40 / 40<BR>&nbsp;&raquo;&nbsp;
<b>Location:</b> <a href=map.php?cx=50&cy=50>Empire Capital</a>
<BR><BR><BR><BR><BR>
<center><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="460" height="54" id="showarmy" align="middle">

HTMLは次のようになります。これは、204行目のソースのここ(http://www.lordswm.com/pl_info.php?id=2255 )からのものです。

編集:

var append1 = "<br><br>&nbsp;&raquo;&nbsp;<b>Total FSP: </b>";
var append2 = "<br>&nbsp;&raquo;&nbsp;<b>Ratio: </b>";
var fsptag = document.createElement('text');
fsptag.innerHTML = append1 +fspRound +append2 +ratioRound;       //fspRound & ratioRound are numbers

次に、これを使用するとgetexp.appendChild(fsptag);、追加されたテキスト(html?)が最後、つまり<object>(htmlコードの最後の行)の後に作成されます。<br>5つのタグの間に表示したい(htmlコードの8行目)。遅れてすみません、私はそれを自分で理解しようとしていました。

4

1 に答える 1

3

createElement(tag_name)で定義されたHTML要素を作成しますtag_name。Afaikは、<text>の内部にのみ表示され<svg>ます。カスタムHTMLタグを作成する目的はありますか?その場合は、他の名前を使用する必要があります。

appendChild()文字列ではなく、引数として要素を取ります。また、要素が一度追加されると、元の位置から移動されます。つまり、's引数で使用される変数の値はになります。つまり、新しい要素を2回挿入する場合は、再度挿入する前に要素を再作成する必要があります。appendChildnull

最近のブラウザでは、childNodesコレクションにタグ間の空白と新しい行も含まれているため、のインデックスを再計算する必要がある場合がありますinsertBefore()


編集

投稿を編集すると、わかりやすくなります。簡略化したフィドルを保存しました。それは多分あなたが必要とするものを閉じますか?

フィドルの基本的なコードは次のようになります。

var getexp = document.getElementsByTagName("td")[219];
var fsptag = document.createElement('div');
fsptag.innerHTML = append1 + fspRound + append2 + ratioRound;
getexp.insertBefore(fsptag, getexp.childNodes[10]);
于 2013-02-17T16:32:26.903 に答える