2014-01-31 24 views
1

我試圖獲得一個表格單元格,當我們點擊它時可以變成文本框,以便我們可以填充它,然後將文本添加到單元格中。Javascript getElementbyId工作一次,但不是兩次?

還有就是我的JavaScript函數:

$(".cellConsigne").click(function() { 
    var numId = this.id.substring(24); 
    document.getElementById("MainContent_txtConsigne" + numId).style.display = "block"; 
    document.getElementById("MainContent_txtConsigne" + numId).focus(); 
}); 

$(".txtTab").focusout(function() { 
    var numId = this.id.substring(23); 
    document.getElementById("MainContent_cellConsigne" + numId).textContent = this.value; 
    this.style.display = "none"; 
}); 

和我的細胞的聲明,並在C#代碼的文本框後面:

TableCell cell17 = new TableCell(); 
cell17.ID = "cellConsigne" + i.ToString(); 
cell17.CssClass = "cellConsigne"; 

TextBox txtConsignes = new TextBox(); 
txtConsignes.ID = "txtConsigne" + i.ToString(); 
txtConsignes.CssClass = "txtTab"; 
txtConsignes.BackColor = row.BackColor; 

cell17.Controls.Add(txtConsignes); 

所以問題是,這項工作很好的第一次,我點擊,textBox顯示並獲得焦點。我把它的文本,然後離開文本框和文本去單元格。 但是當我第二次單擊單元格時,我在document.getElementById("MainContent_cellConsigne" + numId)上收到了「引用空錯誤」。

問題可以來自CSS類還是來自風格的修改?我真的不知道。

+2

如果你正在使用jQuery,你應該堅持下去。不使用'getElementById'將會是一個好開始 – CodingIntrigue

+1

學會調試。在行後面加上'console.log(numId);'看看你有什麼。我敢打賭,這會告訴你錯誤。 – epascarello

+0

此外,您應該從'getElementById' DOM查詢保存對象,並且不要執行此操作兩次。 – timmkrause

回答

1

我發現這個問題!

當我這樣做,

document.getElementById("MainContent_cellConsigne" + numId).textContent = this.value; 

它從裏面的控制空單元格,其後添加文本的單元格。所以textBox不在單元格中了。

我只是在單元格中添加一個標籤,並將文本框中的文本添加到標籤,並且不再清空單元格。

相關問題