2013-05-06 22 views
-1

大家好,我想document.write getjson裏面的超鏈接圖像我試着下面,但它不工作。你能告訴我我的文檔寫入有什麼問題嗎?如何將document.write圖像超鏈接到getjson中?

<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> 
+0

你有控制檯的任何錯誤?一個404將回調實際上從來沒有調用 – Brewal 2013-05-06 08:07:57

+1

我建議花費從頭到尾閱讀[jQuery API文檔](http://api.jquery.com)一個小時。它實際上只需要一個小時,它會告訴你如何做基本的事情,比如頁面加載後與DOM進行交互。 – 2013-05-06 08:15:53

回答

3

大家好,我想使用document.write內的getJSON

你不能(不能合理*)的超鏈接的圖像。 document.write只在頁面的初始解析期間起作用。如果在頁面加載完成後使用它,它將完全替換該頁面。

相反,與DOM進行交互。幾種方法可以做到這一點,但根據您的代碼最明顯的就是有錨最初隱藏,然後在文本區域填充這樣以後表現出來:

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

完整的例子:Live Copy | Live Source

(我已經改變了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> 

* 「不能合理」IF您的內容來自與文檔相同的來源(它看起來不像),您可以通過同步ajax調用完成此操作。但那會是非常糟糕的設計。

+0

感謝您的回覆。我的主要目標是用sitecontent變量來改變href值部分。我可以這樣做嗎?我從getjson獲取響應,因爲它在textarea中顯示它!我試過document.getElementById(「ok」)。innerHTML = siteContents;但它改變超鏈接url和超鏈接的圖像不顯示! – user1788736 2013-05-06 08:16:30

+0

@ user1788736:你的意思是錨上的'href'?你可以使用[attr'函數](http://api.jquery.com/attr)(或[''prop'函數](http://api.jquery.com/prop)他們主要是做同樣的事情)。 – 2013-05-06 08:17:59

+1

'$('#ok').attr('href','http://www.mysite.com/master.m3u8?'+ siteContents);' – Brewal 2013-05-06 08:18:44

0

請,使用的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); 
    });