2013-04-24 4 views
1

Stack Overflow와 JavaScript에서 처음 사용되었습니다. 그래서 우선, 모두에게 안녕하세요. 그리고 당신의 도움에 미리 감사드립니다.innerHTML을 사용할 수 없습니다.

나는 Incomedia Website X5 Evolution을 사용하여 웹 사이트를 만들고 있습니다. 페이지 중 하나에서 서버의 데이터로 테이블을 채우고 싶습니다. 그래서 테이블을 만들고 각 셀에 다음 HTML 코드를 삽입했습니다.

<!--#0000,0000--> 

값은 행과 열을 나타냅니다. 각 셀의 값을 변경하기 위해 자바 스크립트를 작성했습니다. 그러나 innerHTML을 사용하여 HTML pahe의 내용을 대체하려고 할 때 작동하지 않습니다. 그럼에도 불구하고 오래된 HTML 내용과 새로운 HTML 내용이 동일하기 때문에 모든 것이 정확합니다. 원래 변수를 다시 사용하더라도 여전히 작동하지 않습니다.

문제가있는 곳을 알려주세요.

여기에 자바 스크립트 코드 : 당신은 설정

<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

가'당신에게 확신 :

는 나는 여기서 일하는 얻을 수 있었다? 그리고 주변의'for' 루프가 올바르게 실행됩니까? – Ian

+0

경고에서 무엇을 얻습니까? –

+0

또한 HTML을 포함 할 수 있습니까? 그것은 도움이 될 것입니다 –

답변

0

: 다음

var newHtmlContent = div[0].innerHTML; 

그리고 :

div[0].innerHTML = newHtmlContent ; 

당신은 그것의 내용이 이미 무슨 내용을 설정하고 있습니다. 따라서 변경 사항이 발생하지 않습니다.

+0

처음에는 그렇습니다,하지만 나중에, 그들은'newHtmlContent = insertText (row, col, newHtmlContent, i); 그리고 나서'div [0] .innerHTML = newHtmlContent; – Ian

0
<td> 태그 대신 <table> 태그를 찾기 위해

div = document.getElementsByTagName('td'); 

에 3 행을 변경

. <table>는 텍스트 데이터를 직접 저장할 수 없으므로 innerHTML이 예상대로 작동하지 않습니다. (htmlContent.charAt (I) == '#') {`지금까지에 해당하는 경우 http://jsfiddle.net/mgabor/ZMaW6/1/

관련 문제