2011-05-30 34 views
0

我想要得到的clientId動態取決於迭代次數如如何根據迭代次數獲取控件?

var clientID = "<%=NumericTextBox" + 1 + ".ClientID %>"; 
var id = document.getElementById(clientID); 

,但如果我嘗試使用上面的語句把它拋出控制「預計」,「)exppected」錯誤什麼是適當的方式獲得控制權?

+0

哪一行是被拋出的錯誤?它說出哪個角色?這在網頁瀏覽器中編譯得很好 – ninjagecko 2011-05-30 04:20:32

+1

你真的有一個id值爲<%= NumericTextBox1.ClientID%>的HTML元素嗎?這看起來像嘗試使用模板語言並將其與JavaScript或其他東西混合?我覺得這裏還有更多的事情比你解釋的更多。 – Chuck 2011-05-30 04:24:56

+0

我們可以假設你正在使用MVC和.NET,或者什麼語言正在評估<% %>部分? – 2011-05-30 04:26:32

回答

2

我認爲你必須在asp.net數字文本框控件。如果你需要得到它的ID,就可以使用

var clientId = '<%= NumericTextBox.ClientId %>'; 
var txt = document.getElementById(clientId); 

如果文本框是一個網格控件中,你通常會在年底或在這樣

var clientId = 'ctl_0' + i + '<%= NumericTextBox.ClientId %>' 
開始追加數

您可以通過查看源代碼來檢查框架正在呈現的id。

1

我不知道你在使用什麼服務器端語言和模板引擎,但我認爲你錯誤地使用了它,這就是錯誤。在大多數語言中,這將解析爲執行下面的代碼在服務器端模板指令:

NumericTextBox " + 1 + " .ClientID 

這是無稽之談大多數語言,看起來像在我所知道的任何語言錯誤。 (它實際上可能是有效的Ruby,但可能不正確,因爲紅寶石字符串通常不會有ClientID方法。)

0
var clientID = '<%=FindControl("NumericTextBox" + "1").ClientID%>'; 
var id = document.getElementById(clientID); 
+0

感謝您的回覆,但它在瀏覽器窗口上引發錯誤無法修改控件集合,因爲控件包含代碼塊(即<% ... %>)。 – Tuscan 2011-05-30 04:45:00

+0

嘗試重組您的代碼以避免這種情況發生,例如用你的變量建立一個字符串,然後寫入客戶端 – Rodrigo 2011-05-30 07:04:03