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

时间:2022-04-01 15:55:47

Hidden fields:

<input type="hidden" id="hidOrg1"  runat="server" value="" />
<input type="hidden" id="hidBT" runat="server" value="" />

javascript function:

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";
    }
}

codebehind:

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

The javascript function errors out with "Object Expected" at the var brk = ... and I cannot figure out where it is going wrong. Pulling my hair out! :(

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

1 个解决方案

#1


17  

When you place runat="server" in an standard HTML tag, ASP.Net mangles the ID to ensure that it's unique (just like it does with its own controls). You need to access the element using the ID that ASP.Net assigned. Try this:

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

var brk = document.getElementById('<%= hidBT.ClientID %>').value;
var org = document.getElementById('<%= hidOrg1.ClientID %>').value;

Additional Information

If you're using the 4.0 framework, you can change this behavior at the element, page, or application level. Check out this link for a decent little tutorial. If you choose to set the ClientIdMode to Static, you can access your elements by the ID's that you originally assigned (they will not be changed).

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

#1


17  

When you place runat="server" in an standard HTML tag, ASP.Net mangles the ID to ensure that it's unique (just like it does with its own controls). You need to access the element using the ID that ASP.Net assigned. Try this:

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

var brk = document.getElementById('<%= hidBT.ClientID %>').value;
var org = document.getElementById('<%= hidOrg1.ClientID %>').value;

Additional Information

If you're using the 4.0 framework, you can change this behavior at the element, page, or application level. Check out this link for a decent little tutorial. If you choose to set the ClientIdMode to Static, you can access your elements by the ID's that you originally assigned (they will not be changed).

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