js 取服务器控件ID问题 急!!

iGreenHill 2010-05-18 11:33:01
<script>
//弹出窗口 查询数据
function fnOpen_window(texID) {
window.open("OweMaterialDataSelectList.aspx", '_blank', 'Height=700px,Width=1000px,,top=100px,left=450px,center=yes,resizable=yes,help=no,');
document.getElementById("texHidden").value = texID;
}

//得到弹出窗口的返回值,且只返回只一个值的
function setValue(returnValue) {
if (returnValue != undefined && returnValue.length > 0) {
var str = returnValue; //得到弹出窗口的返回值
var texBoxID = document.getElementById("texHidden").value;
document.getElementById(texBoxID + ".<%=ClientID%>").value=str;
}
}
</script>

<input type="hidden" id="texHidden" />

<asp:TextBox ID="mr_ItemCode_GO" runat="server" Text=""></asp:TextBox><img alt='查看物料编号' src='/Common/image/d.png' onclick="fnOpen_window('mr_ItemCode_GO')" />

首先我在页面上放了个隐藏域,用以在fnOpen_window(),保存所传服务器控件的ID,然后在setValue(returnValue),中取服务器控件的ID。

以下是取的两种方法均报错:
1、document.getElementById("<%=" + texBoxID + ".ClientID%>").value;
错误提示: “string”不包含“ClientID”的定义,并且找不到可接受类型为“string”的第一个参数的扩展方法“ClientID”(是否缺少 using 指令或程序集引用?)
2、document.getElementById( texBoxID + ".<%=ClientID%>").value;
错误提示:document.getElementById(...) 为空或不是对象

我想请教一下,是不是不能用这两种方式,或者是将string类型转换为别的类型之后就可以".ClientID"这种取呢?
或者说其它更好的方法来取到这个服务器控件的ID值呢?document.getElementById("<%=texBoxID.ClientID%>")这样是可以取到,但是我的 texBoxID 是不断变化的 ID名
有点急,谢谢!
请各位大虾帮帮帮
...全文
219 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
pei2lala 2010-05-19
  • 打赏
  • 举报
回复
previoussibling 是获取他的上一个兄弟节点

其实这个你不明白意思可以自己去百度上搜的 一搜就能搜到
baoxuetianxia 2010-05-18
  • 打赏
  • 举报
回复
document.getElementById(<%= texBoxID.ClientID%>).value;
pei2lala 2010-05-18
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 huangxiandong_dodo 的回复:]

顶 ……
[/Quote]

?? 前面那样改不行? 我这边测试都取的到
iGreenHill 2010-05-18
  • 打赏
  • 举报
回复
顶 ……
qiuqingpo 2010-05-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 huangxiandong_dodo 的回复:]

document.getElementById(texBoxID + ".<%=ClientID%>").value=str;
改成
document.getElementById(texBoxID).value=str;
这样不行 还是对象为空或不是对象

那个隐藏域说保存的ID是不断变换的(调用一次函数,ID就变换了)
[/Quote]
是的
pei2lala 2010-05-18
  • 打赏
  • 举报
回复
这样
document.getElementById("texHidden").value = texID;
改成
document.getElementById("texHidden").value = texID.previousSibling.id;


document.getElementById(texBoxID + ".<%=ClientID%>").value=str;
改成
document.getElementById(texBoxID).value=str;


onclick="fnOpen_window('mr_ItemCode_GO')"

改成

onclick="fnOpen_window(this)"
iGreenHill 2010-05-18
  • 打赏
  • 举报
回复
没人说了吗? 自己顶一下
iGreenHill 2010-05-18
  • 打赏
  • 举报
回复
texBoxID 是保存隐藏域的值的 是个变量,用来保存控件的ID 不是控件的ID
iGreenHill 2010-05-18
  • 打赏
  • 举报
回复
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
<script type="text/javascript" language="javascript">
//根据下拉框的选项的值optionValue,对DIV进行隐藏
function selectOptionValue(optionValue) {
//alert(optionValue);
for (i = 1; i <= 9; i++) {
var selectDivId = "select" + i + "";
var optionValueItem = "select" + optionValue;
document.getElementById(selectDivId).style.display = 'none'; //隐藏层
if (selectDivId == optionValueItem) {
document.getElementById(selectDivId).style.display = 'block';//显示层
}
}
}

//弹出窗口 查询数据
function fnOpen_window(texID) {
window.open("OweMaterialDataSelectList.aspx", '_blank', 'Height=700px,Width=1000px,,top=100px,left=450px,center=yes,resizable=yes,help=no,');
document.getElementById("texHidden").value = texID;
}

//得到弹出窗口的返回值,且只返回只一个值的
function setValue(returnValue) {
if (returnValue != undefined && returnValue.length > 0) {
var str = returnValue; //得到弹出窗口的返回值

var texBoxID = document.getElementById("texHidden").value;

document.getElementById(texBoxID).value = str;


}

}


</script>

</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<asp:TextBox ID="mr_ItemCode_GO" runat="server" Text=""></asp:TextBox><img alt='查看物料编号' src='/Common/image/d.png' onclick="fnOpen_window('mr_ItemCode_GO')" />
<asp:Content>


运行中的:
从<input name="ctl00$ContentPlaceHolder1$mr_ItemCode_GO" type="text" id="ctl00_ContentPlaceHolder1_mr_ItemCode_GO" /><img alt='查看物料编号' src='/Common/image/d.png' onclick="fnOpen_window('mr_ItemCode_GO')" />
qq497525725 2010-05-18
  • 打赏
  • 举报
回复

document.getElementById(<%= texBoxID.ClientID%>).value;
iGreenHill 2010-05-18
  • 打赏
  • 举报
回复
document.getElementById(texBoxID + ".<%=ClientID%>").value=str;
改成
document.getElementById(texBoxID).value=str;
这样不行 还是对象为空或不是对象

那个隐藏域说保存的ID是不断变换的(调用一次函数,ID就变换了)
imfor 2010-05-18
  • 打赏
  • 举报
回复
document.getElementById(<%= texBoxID.ClientID%>).value;
pei2lala 2010-05-18
  • 打赏
  • 举报
回复
你把生成的html代码贴一分上来
还有 如果ID不好做 可以 用name
pei2lala 2010-05-18
  • 打赏
  • 举报
回复
document.getElementById(texBoxID + ".<%=ClientID%>").value=str;
改成
document.getElementById(texBoxID).value=str;

这样就行了
q107770540 2010-05-18
  • 打赏
  • 举报
回复
先预览你的页面
然后用txt查看页面的源文件

找到texBoxID

然后document.getElementById('在此放置你的在源文件中找到的ID')
iGreenHill 2010-05-18
  • 打赏
  • 举报
回复
接分吧!!!
iGreenHill 2010-05-18
  • 打赏
  • 举报
回复
如果是能细说一下 previoussibling 的 意思的话就更好了~~~~

不过还是要 谢谢 10 楼 pei2lala 用你的方法问题解决了!

接分吧!!!
bj2008huwei 2010-05-18
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 pei2lala 的回复:]
这样
document.getElementById("texHidden").value = texID;
改成
document.getElementById("texHidden").value = texID.previousSibling.id;


document.getElementById(texBoxID + ".<%=ClientID%>").value=st……
[/Quote]

Internet Explorer 会忽略节点间生成的空白文本节点(例如,换行符号),而 Mozilla 不会这样做。你还应该写个方法function get_previoussibling(n)
{
var x=n.previousSibling;
while (x.nodeType!=1)
{
x=x.previousSibling;
}
return x;
}
T_long 2010-05-18
  • 打赏
  • 举报
回复
document.getelementbyid("ctl00$ContentPlaceHolder1$mr_ItemCode_GO")
iGreenHill 2010-05-18
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 pei2lala 的回复:]
这样
document.getElementById("texHidden").value = texID;
改成
document.getElementById("texHidden").value = texID.previousSibling.id;


document.getElementById(texBoxID + ".<%=ClientID%>").value=st……
[/Quote]

10楼大虾,能细说一下 previousSibling.id 的 做用、用法和属性吗?
加载更多回复(4)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧