了解Javascript getElementById以查找sharepoint表单中的asp.net控件

了解Javascript getElementById以查找sharepoint表单中的asp.net控件,javascript,sharepoint-2007,Javascript,Sharepoint 2007,这是我的Sharepoint编辑表单: 我需要能够在javascript中使用asp.net文本框: <asp:TextBox runat="server" id="ff17{''}" text="{@Container_x0020_Qty}" __designer:bind="{ddwrt:DataBind('u',concat('ff17',''),'Text','TextChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Container

这是我的Sharepoint编辑表单: 我需要能够在javascript中使用asp.net文本框:

<asp:TextBox runat="server" id="ff17{''}" text="{@Container_x0020_Qty}" __designer:bind="{ddwrt:DataBind('u',concat('ff17',''),'Text','TextChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Container_x0020_Qty')}" />
这不管用

但是,如果复制页面呈现为表单Id的内容:

var CCID = document.getElementById("ctl00_m_g_64200ded_b593_468b_bca5_0ea023581b8a_ff17");
这管用


有没有一种方法可以让它工作而不必总是弄清楚ct部分?

我不确定sharepoint和绑定是如何工作的。但是在ASP.net中,您可以这样做

var CCID = document.getElementById('<%= ff17.ClientID %>');
var CCID=document.getElementById(“”);

我不确定这是否可行,但它可能会为您指明正确的方向。

我不确定这将如何转化为sharepoint,但对于普通的asp.net页面,我通常会在头部插入这样的脚本以获取客户端ID:

<head runat="server">
    <script type="text/javascript" language="javascript">           
        //ClientIDs for controls in naming containers that we'll want to use from javascript
        var Controls = {
            'ff17':<%="'" + ff17.ClientID%>',
                'othercontrol':<%="'" + othercontrol.ClientID%>'};
    </script>
</head>

//我们希望从javascript使用的命名容器中的控件的ClientID
变量控制={
‘ff17’:’,
'othercontrol':'};
我这样考虑它的原因是为了避免在任何我想使用它的地方重新呈现id,因为我可以从包含的脚本文件中引用它,而不必通过asp.net处理器传递它们。控件对象是为了避免命名冲突(只需担心一个名称)


缺点是初始引号的难看字符串连接,因为更简单的
'
语法在这里不起作用。此外,这对母版页也不起作用,其中头部在母版页中,但您关心的控件在细节页中。但是您当然可以在页面的其他地方执行此操作。

+1这比在正常javascript代码的其余部分中插入
要好。使Javascript的主体完全处于静态状态。遗憾的是,我无法在sharepoint中实现这一点:(
<head runat="server">
    <script type="text/javascript" language="javascript">           
        //ClientIDs for controls in naming containers that we'll want to use from javascript
        var Controls = {
            'ff17':<%="'" + ff17.ClientID%>',
                'othercontrol':<%="'" + othercontrol.ClientID%>'};
    </script>
</head>