※ ChatGPTを利用し、要約された質問です(原文:<img>タグを<span>でくくりたい)
<img>タグを<span>でくくりたい
このQ&Aのポイント
<img>タグをgetElementsByTagNameで取得し、<span class="align_left"><img .... /></span> みたいに囲いたいと考えています。
条件として、<img>タグの親ノードは<p>タグです。
全くノウハウは知りませんが、以下のような考え方で実現できるのでしょうか?
Javascript初心者を脱出したい者です。
<img>タグをgetElementsByTagNameで取得し、
<span class="align_left"><img .... /></span> みたいに囲いたいと考えています。
条件として、<img>タグの親ノードは<p>タグです。
全くノウハウは知りませんが、以下のような考え方で実現できるのでしょうか?
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Insert nextContent</title>
<script type="text/javascript">
<!--
window.onload = function() {
var out_span = document.createElement('span');
out_span.setAttribute('class', 'align_left');
var list = document.getElementsByTagName('img');
var img = list[0];
/* この後、
どうやって、out_span を挿入すればよいのか?
*/
}
//-->
</script>
</head>
<body>
<h1> IMGタグに親ノードを追加したい </h1>
<p>
文ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー。
<img src="../images/logo.gif" alt="Logo" />
</p>
</body>
</html>
★ インデントは全角スペースで行っております。
ご教示お願いします。
お礼
夜おそくまで回答いただきありがとうございます。 Chrome13 で、成功することを確認しました。 質問の趣旨が変わってしまうのですが、 IE6, FireFox6で、以下のattribute設定をためしたところいずれも成功しません。 out_span.setAttribute('class', 'align_left'); // Chrome Ok out_span.setAttribute('className', 'align_left'); //Chrome Ok, But classname="align_left" out_span.className = "align_left";// IE6,FF6 Ng 一方、DOMツリーに既存の要素の class属性値を変更するには、 //IE6 Ok elem.setAttribute( 'className', 'foo'); //FF6, Chrome13 Ok elem.setAttribute( 'class', 'foo'); で出来ました。 DOMツリーに追加する前のオブジェクトに、class属性を追加する場合、 IE6 では何か特別なことをする必要があるのでしょうか?
補足
すみません。お礼の後、setAttribute関係のスクリプトを外して実行したところ、単なる<span></span>で囲われることを期待したのですが、そうなりませんでした。(IE6と7, FireFox3.6) ブラウザで「ソースの表示」 で確認しているのですが、 <span>タグが追加されておりません。 原因は、class属性の追加ではなく、提供頂いた、 out_span.appendChild(img.parentNode.replaceChild(out_span, img)); にブラウザ間の互換性に問題があるのでしょうか?