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或不是对象
答案 0 :(得分:5)
当您添加runat="server"
时,id
和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而不是名字来获取你的元素。
答案 1 :(得分:-1)
您可以使用控件的ID,但如果您有母版页,则可以使用该问题 模板或网格然后将更改ID。因此,您可以将客户端ID模式设置为静态,以便在这种情况下不会更改
示例
&LT;输入runat =“server”type =“text”name =“fileName”id =“fileName”class =“file_input_textbox”readonly =“readonly”/&gt;
或者您可以获取控件的客户端ID。
示例:
document.getElementById(&lt;%= fileName.ClientID%&gt;);
希望这有用..