document.getElementById('id').值在ASP.net javascript函数中失败

tod*_*und 9 javascript c# asp.net getelementbyid runatserver

隐藏的字段:

<input type="hidden" id="hidOrg1"  runat="server" value="" />
<input type="hidden" id="hidBT" runat="server" value="" />
Run Code Online (Sandbox Code Playgroud)

javascript函数:

function doGetWave(obj) {
    //debugger
    var brk = document.getElementById('hidBT').value;
    //var brkId = document.getElementById('hidBI').value;
    var org = document.getElementById('hidOrg1').value;
    session = obj.options[obj.selectedIndex].value;
    sWaveText = obj.options[obj.selectedIndex].text;    
    if (brk == "") {
        window.location.href = "url.aspx?multiple=" + org + "&wave=" + sWaveText + "&strORGId=multiple";
    }
    else {
        window.location.href = "url.aspx?multiple=" + org + "&wave=" + sWaveText + "&BRKType=" + brk + "&strORGId=multiple";
    }
}
Run Code Online (Sandbox Code Playgroud)

代码隐藏:

protected void Page_Load(object sender, EventArgs e)
{
    hidOrg1.Value = strOrgId;
    hidBT.Value = "";
}
Run Code Online (Sandbox Code Playgroud)

javascript函数在var brk = ...时出现"Object Expected"错误,我无法弄清楚它出错的地方.拉出我的头发!:(

Jam*_*ill 19

当您放置runat="server"在标准HTML标记中时,ASP.Net会破坏ID以确保它是唯一的(就像它对自己的控件一样).您需要使用ASP.Net分配的ID访问该元素.试试这个:

var brk = document.getElementById('<%= hidBT.ClientID %>').value;
var org = document.getElementById('<%= hidOrg1.ClientID %>').value;
Run Code Online (Sandbox Code Playgroud)

附加信息

如果您使用的是4.0框架,则可以在元素,页面或应用程序级别更改此行为.查看此链接以获得体面的小教程.如果选择设置ClientIdModeStatic,则可以按最初分配的ID访问元素(不会更改).

  • 这样做了.在"查看源代码"中,我发现了ASP插入的随机垃圾.大豆很烦人. (2认同)