2011-01-26 16 views
3

我是新來的原型,但相當有經驗的jQuery,所以它可能只是我誤解了原型的工作原理。我試着做以下原型替換方法給出空錯誤

$$("tr.total_line td.total_cell").first().replace(newTotal);

,但我發現TypeError: Cannot read property 'firstChild' of null

當我在JS控制檯執行$$("tr.total_line td.total_cell").first()我得到一個DOM元素的結果。

下面是相關的標記

<tr class="total_line"> 
    <td colspan="2">Total</td> 
    <td class="total_cell">$50.00</td> 
    <td></td> 
</tr> 
+0

什麼是`newTotal`?我試圖在Chrome中複製這個問題,但不是打破它的工作。 – 2011-01-26 05:41:07

回答

2

由於.first()返回一個<td>元素,你需要以插入一個<td><th>用於替換是有效的HTML。

所以,如果newTotal是:

"<td>$100</td>" 

...它應該工作。但如果它只是:

"$100" 

......它沒有。

或者另一種辦法是更換<td>innerHTML

$$("tr.total_line td.total_cell").first().innerHTML = newTotal; 
+0

原來是這樣。我習慣了jQuery給我包裝對象,而不是DOM元素,所以我沒有意識到我需要使用DOM屬性。 `innerHTML`不起作用,但`innerText`出於某種原因。 – Vadim 2011-01-26 14:06:28

0

如果replace繼續造成問題,你可以嘗試update代替其以相似的方式工作。