2013-04-24 87 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/