情景是这样的:
ASP.NET 页面上有个GridView控件,其中有一列是单选框,由于每次加载数据完之后每一行单选框对应的Name都被更改成了不同的值,导致可以多选。
现在我在页面 OnLoad里面加载完数据之后,都重新给每一行单选框重新命名。代码如下:
前端脚本:
<script language="javascript">
function SetRadioName() {
var gv = document.getElementById("MainContent_GridView1"); //获取GridView的客户端ID
var myradio = gv.getElementsByTagName("input"); //获取GridView的Inputhtml
for (var i = 0; i < myradio.length; i++) {
if (myradio[i].type == 'radio')//hidden
{
myradio[i].setAttribute("name", "myradio");
}
}
};
</script>
Onload调用:
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (!Page.IsPostBack)
{
LoadData();
ScriptManager.RegisterStartupScript(this, this.GetType(), Guid.NewGuid().ToString(),
"SetRadioName()", true);
}
}
以上代码当走完脚本之后,走下一步就报错了:JavaScript 运行时错误: 缺少对象
跳过这个错误提示之后,页面也能正常加载。 可是每次都会弹出这个错误。有没有哪位大哥知道原因呢??
window.onload=function(){
var gv = document.getElementById("MainContent_GridView1"); //获取GridView的客户端ID
var myradio = gv.getElementsByTagName("input"); //获取GridView的Inputhtml
for (var i = 0; i < myradio.length; i++) {
if (myradio[i].type == 'radio')//hidden
{
myradio[i].setAttribute("name", "myradio");
}
}
}
//先这样,改一手,或者把js放在页脚。不行的话。就用谷歌打开,F12 sources 调试一手看看,看看是哪里的问题。
获取ID可以用ClientID。
var gv = document.getElementById("<%=GridView1.ClientID%>");
脚本报错,如果你确认自己写的没错,也许是浏览器兼容问题,建议换多换其他浏览器试试。