2010-05-14 49 views
1

您好,我想調用函數changeDivHTML其通過圖像的javascript腳本的innerHTML

<a href="javascript:void(0)" onclick="changeDivHTML(<img src='.DIR_WS_IMAGES .$addimages_images[$item]['popimage'].'>)"> 

和功能添加此圖像到特定的ID的DIV。

功能是本

<script language="javascript" type="text/javascript"> 
        function changeDivHTML(item) 
        { 
        alert(item); 
         previousInnerHTML = 'item'; 
         alert(previousInnerHTML); 
         document.getElementById('image').innerHTML = previousInnerHTML; 
        } 
</script> 

,但是當我在圖像上單擊瀏覽器showas的JavaScript錯誤。

Error: invalid XML attribute value 
Source File: http://xxx.xxx.xxx.xxx:xxx/product_info.php?products_id=31 
Line: 1, Column: 23 
Source Code: 
changeDivHTML(<img src=images/products/top/product_big1.jpg>) 

plsease幫助如何清除此錯誤。

回答

0

它傳遞一個字符串(即東西用引號包圍),而不是一些無效E4X

2

changeDivHTML需要你傳遞一個字符串給它,但你忘了分隔符是什麼導致錯誤。

<a href="javascript:void(0)" onclick="changeDivHTML('<img src=\''.DIR_WS_IMAGES .$addimages_images[$item]['popimage'].'\'>')"> 
1

嘗試是通過將參數字符串,如下面

<a href="javascript:void(0)" onclick="changeDivHTML('<img src='.DIR_WS_IMAGES .$addimages_images[$item]['popimage'].'>')"> 

不要忘了處理轉義字符。

2

首先,您必須以字符串的形式傳遞,而不是標籤!而且,你必須在最後關閉它。

<a href="javascript:void(0)" onclick="changeDivHTML(\"<img src='.DIR_WS_IMAGES .$addimages_images[$item]['popimage'].'/>\")">

其次,你應該改變這樣的腳本,讓你得到你想要的圖片標籤:

<script language="javascript" type="text/javascript"> 
        function changeDivHTML(item) 
        {       
         previousInnerHTML = item; 
         document.getElementById('image').innerHTML = previousInnerHTML; 
        } 
</script> 

希望我幫助。 =)

+0

實際上,您的第一個示例不起作用,因爲HTML屬性沒有轉義字符。例如,你不能有'onclick =「str = \」我是一個字符串\「」',因爲無論轉義字符如何,HTML解析器都會在第一個'\「'結束屬性。 – 2010-05-14 11:32:28

0

我猜你試圖改變一個DIV的內部HTML到其他內容點擊鏈接時按下。引用文檔中已有的其他HTML更容易(如果它最初必須隱藏,可能被style="display:none"隱藏)。下面是一個示例:

<div id="div1">Here's div1 <img src="1.png"/></div> 
<div id="div2">Here's div2.</div> 
<a href="#" onclick="changeDivHtml('div1', 'div2')">Click to Change</a> 
<script language="javascript"> 
    function changeDivHtml(source, target) { 
    var elSource = document.getElementById(source) 
     , elTarget = document.getElementById(target); 
    elTarget.innerHTML = elSource.innerHTML; 
    } 
</script>