【问题标题】:document.getElementById('id').value failing in ASP.net javascript functiondocument.getElementById('id').value 在 ASP.net javascript 函数中失败
【发布时间】:2012-02-01 19:25:10
【问题描述】:

隐藏字段:

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

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

代码隐藏:

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

javascript 函数在 var brk = ... 处出现“Object Expected”错误,我不知道哪里出了问题。拔我的头发! :(

【问题讨论】:

  • 有没有可能在隐藏字段呈现之前调用doGetWave

标签: javascript c# asp.net getelementbyid runatserver


【解决方案1】:

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

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

其他信息

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

【讨论】:

  • 这成功了。在“查看源代码”中,我发现了 ASP 插入的随机废话。大豆很烦人。
  • 或者,如果您使用的是 .net 4,请将 clientidmode 设置为 static。
  • 完美答案!!。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-07
  • 2020-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-17
  • 2017-09-25
相关资源
最近更新 更多