プロが教えるわが家の防犯対策術!

初心者を抜け出そうとしている者です。

画像の下にキャプションを付けたいのですが、
alt= の値を利用しようと思っています。
下記のようなスクリプトで実現できる方法はあるのでしょうか?

<html>
<head>
<script type="text/javascript">
<!--
  window.onload = function() {

    var list = document.getElementsByTagName('img');
    
    for (var i=0; i < list.length; i++) {
      /* ココで、それぞれの<img> の alt=の値を取り出し、
        それぞれの<img>の直後に、
        '<br><span> alt の値 </span>' を挿入したい
       */
    }
  }
//-->
</script>
</head>
<body>
<h1>テスト IMGタグの後に文字列出力</h1>
<img src="../images/logo1.gif" alt="Logo1" />
<img src="../images/logo2.gif" alt="Logo2" />
</body>
</html>

※ 上記インデントは全角スペースで書いております。

上のような方法以外でもかまいませんので、
スクリプト例を書いていただけると嬉しいです。
よろしくお願いします。

A 回答 (2件)

定義通りつくるとこんな感じ。

でもちょっと変ですね・・・

<script>
window.onload = function() {
var list = document.getElementsByTagName('img');
for (var i=0; i < list.length; i++) {
var alt=list[i].getAttribute("alt");
if(alt){
var span=document.createElement("span");
span.appendChild(document.createTextNode(alt));
list[i].parentNode.insertBefore(span,list[i].nextSibling);
var br=document.createElement("br");
list[i].parentNode.insertBefore(br,list[i].nextSibling);
}
}
}
</script>
<h1>テストIMGタグの後に文字列出力</h1>
<img src="1.jpg" alt="Logo1" />
<img src="2.jpg" alt="Logo2" />
<img src="3.jpg" />
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。

試してみまして、できることを確認しました。
この先は、それぞれ画像を <span>で囲い、style="margin: 5px; float: right;" などを付けたりするつもりです。

どうもありがとうございました。

お礼日時:2011/09/01 18:31

そういう場合は imgを直接探索するんじゃなくて



識別できるspanかなにかで囲ってそれを変換する方が良いよ


<img />


<span class="swap"><img /><br /><span class="altText" /></span>

この形でswapのspanを取り出すか imgのparentにぶら下がってるaltTextのspanをいじるかどっちか。


ただ、見た感じ、改行したいならspanじゃなくdivで囲んだり、htmlとして使われない独自タグを配置して入れ替えるほうがgetElementsByTagNameが使いやすいかもしれないけどブラウザによっては独自タグを使うとhtmlじゃないんで勝手に排除したりするので要求ブラウザを良く確認しないとならないね。
IE6を含めるならdivで囲ってやる方法、足斬りしてIE8とかでいいなら独自タグでいけると思う。
gecko(firefox)やwebkit(safari,chrome)、prest(opera)も検証した方が無難

独自タグってこんな風ね
<item><img /></item>
    • good
    • 0
この回答へのお礼

早速の回答をありがとうございます。
幅広くアドバイスをいただいてありがたいです。

お礼日時:2011/09/01 18:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!