-1

こんにちは、getjson内にハイパーリンク画像をdocument.writeしたいのですが、次のことを試しましたが、うまくいきません。私のドキュメントの書き込みのどこが悪いのか教えていただけますか?

<script>  
$.getJSON('http://anyorigin.com/get?url=http://www.somesite.com/handelit.ashx&callback=?', function(data){
      var siteContents = data.contents;      
      //writes to textarea  
      document.myform.outputtext.value = siteContents ;  
      document.write("<a id="ok" href="http://www.mysite.com/master.m3u8?+siteContents+"><img src="./playicon.jpg"></a>");

    });  
</script> 
4

2 に答える 2

3

こんにちは、getjson 内にハイパーリンク イメージを document.write したいと思います。

できません(合理的ではありません*)。document.writeページの最初の解析中にのみ機能します。ページの読み込みが完了した後に使用すると、ページが完全に置き換えられます。

代わりに、DOM と対話します。これを行うにはいくつかの方法がありますが、コードに基づく最も明白な方法は、アンカーを最初は非表示にしてから、次のようにテキスト領域に入力した後に表示することです。

$("#ok").show();

完全な例:ライブコピー| ライブソース

(playicon.jpg を gravatar に変更しました。そうしないと、JSBin で壊れた画像として表示されるためです)

<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<meta charset=utf-8 />
<title>JS Bin</title>
</head>
<body>
  <form name="myform">
    <textarea name="outputtext"></textarea>
  </form>
  <a id="ok" style="display: none" href="http://www.mysite.com/master.m3u8?+siteContents+"><img src="http://www.gravatar.com/avatar/f69cfb4677f123381231f97ea1138f8a?s=32&d=identicon&r=PG"></a>
  <script>
    (function($) {
      $.getJSON('http://anyorigin.com/get?url=http://www.somesite.com/handelit.ashx&callback=?', function(data){
        var siteContents = data.contents;      
        //writes to textarea  
        document.myform.outputtext.value = siteContents;
        // shows the link
        $("#ok").show();
      });  
    })(jQuery);
  </script>
</body>
</html>

* 「合理的ではない」 :コンテンツがドキュメントと同じオリジンからのものである場合 (そうではないように見えます)、同期 ajax 呼び出しでこれを行うことができます。しかし、それは非常に悪い設計になります。

于 2013-05-06T08:07:07.940 に答える
0

document.write の代わりに createElement を使用してください

$.getJSON('http://anyorigin.com/get?url=http://www.somesite.com/handelit.ashx&callback=?', function(data){
      var siteContents = data.contents;      
      //writes to textarea  
      document.myform.outputtext.value = siteContents ;  

      //Create A-Element
      var link = document.createElement('a');
      link.setAttribute('href', 'http://www.mysite.com/master.m3u8?' + encodeURIComponent(siteContents) );
      link.id = 'ok';

      //Append A-Element to your FORM-Element
      var myForm = document.getElementsByTagName('form')[0];
      myForm.appendChild(link);

      //Create IMG-Element
      var img = document.createElement('img');
      img.setAttribute('src', './playicon.jpg');

      //Append IMG-Element to A-Element (id='ok')
      link.appendChild(img);
    }); 
于 2013-05-06T08:22:21.243 に答える