2013-04-24 85 views
1

我是Stack Overflow的新手,也是JavaScript中的新手。所以,首先,向大家問好,並提前感謝您的幫助。無法使用innerHTML

我使用Incomedia網站X5 Evolution創建網站。在其中一頁上,我想用來自服務器的數據填充表格。所以,我創建了一個表,並在每個單元格中插入此HTML代碼:

<!--#0000,0000--> 

值代表行和列。我設法寫一個JavaScript來改變每個單元格的值。但是,當我想用​​innerHTML替換HTML pahe的內容時,它不起作用。儘管如此,由於舊的和新的html內容是相同的,所以一切看起來都是正確的。即使我只是再次使用原始變量,它仍然不起作用。

你能告訴我問題在哪裏嗎?

下面的JavaScript代碼:

<script> 

var i; 
var div = document.getElementById('imTableObject_1'); 
div = document.getElementsByTagName('table'); 
var htmlContent = div[0].innerHTML; 
var newHtmlContent = div[0].innerHTML; 
var test = div[0].innerHTML; 
var row,col; 

//I can't understand why the scrip stop running at this line. I didn't change anything... 
div[0].innerHTML = newHtmlContent ; 

for (i=htmlContent.length - 5; i > -1; i--) { 

if(htmlContent.charAt(i)=='#') { 

    //alert(i); 
    //alert(htmlContent.substring(i+6,i+10)); 
    row = parseInt(htmlContent.substring(i+1,i+5));  
    col = parseInt(htmlContent.substring(i+6,i+10)); 

    newHtmlContent = insertText(row,col,newHtmlContent,i); 
}; 
}; 

alert(div[0].innerHTML); 
alert(newHtmlContent); 

//This does not work 
div[0].innerHTML = newHtmlContent ; 

alert("Done !"); 



function insertText (row, col, text, index) { 

var length; 
var newText; 

length = getTextLength (text,index + 13); 

//alert(htmlContent.substring(index+13,index+13+length)); 

newText = text.substring(0,index+13); 
newText += "Titi too !"; 
newText += text.substring(index+13+length,text.length); 

//alert(newText); 

return newText ; 

} 

function getTextLength (text,startIndex) { 

var i = 0; 

for(i = startIndex ; i < text.length ; i++) { 

    //alert(text.substring(i,i+7)); 

    if(text.substring(i,i+7) == "</span>") { 

     return i - startIndex ; 
    }; 
}; 

return -1; 
} 

</script> 
+1

確定'如果(htmlContent.charAt(I)== '#'){'是有史以來真的嗎?而周圍的'for'循環運行正確嗎? – Ian 2013-04-24 15:18:31

+0

你從警報中得到什麼? – 2013-04-24 15:19:11

+0

也可以包含HTML嗎?它可能會幫助 – 2013-04-24 15:22:28

回答

0

您設置:

var newHtmlContent = div[0].innerHTML; 

然後:

div[0].innerHTML = newHtmlContent ; 

你設置它的內容,以什麼樣的內容已經是。因此,不會發生變化。

+0

起初,是的,但後來,他們做'newHtmlContent = insertText(row,col,newHtmlContent,i);'然後再次調用'div [0] .innerHTML = newHtmlContent;' – Ian 2013-04-24 15:17:27

0

第3行改爲

div = document.getElementsByTagName('td'); 

尋找<td>標籤,而不是<table>標籤。 <table> s不能直接存儲文本數據,所以我猜他們的innerHTML不能按預期工作。

我設法得到它在這裏工作:http://jsfiddle.net/mgabor/ZMaW6/1/