2012-03-16 5 views
0

私は、異なる画像を参照することとは異なる変数を持っています。たとえば、時々私は var imageName = "A.png"を持っています。 divタグのinnerHTMLを"src=" + imageName + ">"に設定したいのですが、動作しません。 innerHTMLの内容を取得するためにalertを使用したとき、私は<img src="A" .png="">を得ました。なぜこうなった?htmlのimgタグのソースとしてjavascript変数を書き込む方法

リクエストごとに、この問題に関する私のHTMLコードがあります。これは、サーブレットからxmlファイルを受け取るコード本体の一部です。私はそれが奇妙なことがわかりますforループの底部ではうまく動作しますが、imgのsrcビットはありません。

EDIT:サーブレットが書いたものを変更することで、innerHTMLをフォーム<img src="/Users/adamsturge991/Desktop/webapp/Ass5/WEB-INF/classes/A.png">に変換することができました(ファイルが見つかるように絶対パスを追加しました)。しかし、まだ画像はロードされていません。

function displayResult(req) 
{ 
    var doc = req.responseText; 
    parser=new DOMParser(); 
    xmlDoc=parser.parseFromString(doc,"text/xml"); 


    var imageName = xmlDoc.getElementsByTagName('ImageName').item(0).textContent + ".png"; 

    var comments = xmlDoc.getElementsByTagName('Comment'); 

    var imgDisplay = document.getElementById('ImageDisplay'); 

    var str = "<img src=" + imageName + ">"; 
    alert(str); 
    imgDisplay.innerHTML = str; 
    alert(imgDisplay.innerHTML); 
    str = ''; 
    for (var j = 0; j < comments.length; j++) 
    { 
     str = str + "<p>"+ comments.item(j).textContent + "</p>"; 
     } 

    var commentDisplay = document.getElementById('CommentDisplay'); 
    commentDisplay.innerHTML = str; 

} 
+0

コードを投稿すると便利です – ajax333221

+0

**実際のコードを表示してください。 – RobG

+0

'innerHTML'だけを' src'で見たくない場合 – dldnh

答えて

7

奇数私はthis exampleが有用であることが判明:

var url = "www.example.com/image.jpg"; 
var img = new Image(); 
img.src = url; 
document.body.appendChild(img); 

あなたはちょうど私は、この行が間違っていると思う、あなたのニーズに

+1

'document.createElement(" img ")'を使うこともできます。 –

+0

これをページの上部に追加して古いimgを置き換えます。私はこのようなことを言いたいのですが、うまくいきません。 var img = new Image(); img.src = imageName; imgDisplay.removeChild(imgDisplay.firstChild); imgDisplay.appendChild(img); –

+0

@ AdamSturge-use * replaceChild *、 'imageDisplay.replaceChild(img、imageDisplay.firstChild); – RobG

3

を調整するために、いくつかの微調整を行う必要があります。

var str = "<img src=" + imageName + ">"; 

これは、次のようにレンダリングされます:

<img src=A.png> 

しかし、これは、それはおそらくあるべきbrowset を混乱させる可能性:

var str = "<img src=\"" + imageName + "\" \/>"; 

(つまり、属性値を引用し、あり、そして良い測定のために、タグを閉じます。)

これはとしてレンダリング:

<img src="A.png" /> 
+0

内部HTMLのアラートを提案したものに変更した後 :( –

+0

最後の '\ /'はscrapedする必要はありません – ajax333221

+0

@Adam Sturge '%0A'はURLでエンコードされた改行です。 XMLレスポンスを見ると、 ' \ nA \ n'(ここで '\ n'は実際に改行です)が見つかるでしょう。 ( ' A')、または明示的に画像をトリミングするか、 'xmlDoc.getElementsByTagName( 'ImageName')。item(0).nodeValue'が返すようにすることもできます。 (.textContent'の代わりに)トリムされた値を返す –

関連する問題