2013-01-31 27 views
1

在我的應用程序中,我使用Javascript通過PageMethods調用VB側函數。當onSuccess函數被擊中時,我試圖將返回的字符串添加到表的內部html中。下面列出的是我試圖用它來做到這一點的JavaScript,但我不斷收到一個:無法通過Javascript更改表的innerHTML以添加行

"Microsoft JScript runtime error: Unknown runtime error"

下面是表(我想保持這一點,目前是如何可能的話,這是已經到位當我繼承這個項目時)。

  <asp:Table id="tblResults" Runat="server" CssClass="detailTable" CellSpacing="0" CellPadding="4" 
       Width="100%"> 
       <asp:TableRow CssClass="detailRow"> 
        <asp:TableCell Width="1%">&nbsp;</asp:TableCell> 
        <asp:TableCell Width="10%"> 
         <b>ID</b></asp:TableCell> 
        <asp:TableCell> 
         <b>Title</b></asp:TableCell> 
        <asp:TableCell> 
         <b>Manager</b></asp:TableCell> 
        <asp:TableCell> 
         <b>Start Date</b></asp:TableCell> 
        <asp:TableCell> 
         <b>End Date</b></asp:TableCell> 
        <asp:TableCell> 
         <b>Status</b></asp:TableCell> 
       </asp:TableRow> 
      </asp:Table> 

表的innerHTML當JS函數被調用:

<TBODY> 
<TD style="WIDTH:1%">&nbsp;</TD> 
<TD style="WIDTH:10%"><B>ID</B></TD> 
<TD><B>Title</B></TD> 
<TD><B>Manager</B></TD> 
<TD><B>Start Date</B></TD> 
<TD><B>End Date</B></TD> 
<TD><B>Status</B></TD></TR></TBODY> 

這裏是成功的功能的JavaScript的 - 我所做的是我切斷的innerHTML的/ TBODY結局,要在返回字符串添加(包含HTML該表的其他行文本) - 然後添加/ TBODY回到關閉表:

function saveSuccess(c) { 
var oldInner = document.getElementById('tblResults').innerHTML; 
var index = oldInner.indexOf("</TBODY>"); 
oldInner = oldInner.slice(0, index); 
document.getElementById('tblResults').innerHTML = oldInner + c + '</TBODY>'; 
} 

任何人都可以看到爲什麼我收到這個錯誤,爲什麼表不更新顯示返回的HTML?

+0

可能重複的[不能在IE中的tbody上的innerHTML](http://stackoverflow.com/questions/4729644/cant-innerhtml-on-tbody-in-ie) – epascarello

回答

1

從MSDN:

The innerHTML property is read-only on the col, colGroup, frameSet, html, head, style, table, tBody, tFoot, tHead, title, and tr objects.

您必須重建整個表,或者使用DOM API,以便修改/添加內容。

+0

謝謝你,而不是做的方式我是,我能夠放入一個div,並從JS中放入一個全新的表格到div中。這工作 – njj56