web-dev-qa-db-ja.com

document.getElementById( 'id')。valueがASP.netjavascript関数で失敗する

隠しフィールド:

<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関数はvarbrk = ...で「ObjectExpected」でエラーになり、どこが間違っているのかわかりません。髪を抜く! :(

9
todd.pund

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フレームワークを使用している場合は、要素、ページ、またはアプリケーションレベルでこの動作を変更できます。まともな小さなチュートリアルについては このリンク をチェックしてください。 ClientIdModeStaticに設定することを選択した場合、最初に割り当てたIDで要素にアクセスできます(要素は変更されません)。

19
James Hill