[英]Error in javascript code if I wrote runat=“server”
html中的代碼:
<input type="text" name="fileName" id="fileName" class="file_input_textbox" readonly="readonly" />
<div class="file_input_div">
<input type="button" value="Search files" class="file_input_button" />
<input type="file" class="file_input_hidden" onchange="javascript: document.getElementsByName('fileName')[0].value = this.value" />
</div>
它正常工作。 但是,如果我會這樣寫:
<input runat="server" type="text" name="fileName" id="fileName" class="file_input_textbox" readonly="readonly" />
<div class="file_input_div">
<input type="button" value="Search files" class="file_input_button" />
<input type="file" class="file_input_hidden" onchange="javascript: document.getElementsByName('fileName')[0].value = this.value" />
</div>
它無法正常工作,出現錯誤:document.getElementsByName(...)。0'為null或不是對象
當您添加runat="server"
, id
和name
將呈現為不同的name
並且可能會被asp.net更改
為了得到呈現名稱使用UniqueID
,並把它作為<%=fileName.UniqueID%>
,所以你的代碼,因為它是必須做到:
<input runat="server" type="text" name="fileName" id="fileName" class="file_input_textbox" readonly="readonly" />
<div class="file_input_div">
<input type="button" value="Search files" class="file_input_button" />
<input type="file" class="file_input_hidden"
onchange="javascript: document.getElementsByName('<%=fileName.UniqueID%>')[0].value = this.value" />
</div>
我驗證了這一點,這樣,當將其添加到母版頁中時,名稱和ID就會更改。 如果它們獨自出現在沒有母版頁的頁面上,則它們保持原樣,但是如果您將它們添加到母版頁上,它們會發生變化,您需要通過呈現的ID來獲取它們。
請注意,輸入控件上的clientidmode="Static"
不適用於name
而僅適用於id
因此,如果添加它並嘗試使ID保持相同,則必須按ID而不是名稱獲取元素。
您可以使用控件的ID,但是如果您擁有母版頁,並且使用的是模板或網格,則會出現問題,那么ID將被更改。 因此,您可以將客戶端ID模式設置為靜態,這樣在這種情況下就不會更改
例
<input runat =“ server” type =“ text” name =“ fileName” id =“ fileName” class =“ file_input_textbox” readonly =“ readonly” />
或者,您可以獲取控件的客戶端ID。
范例:
document.getElementById(<%= fileName.ClientID%>);
希望這會有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.