javascript获取ID时出错

taz01 2009-01-04 09:08:48

function PanelChange(p) {
if (p.style.display == "")
p.style.display = "none";
else
p.style.display = "";
}

页面有好几个Panel, 然后:
<input id="Button1" type="button" value="隐藏" onclick="PanelChange("<%=Panel1.ClientID%>")" />
一打开这个页面就提示出错:行34 语法错误。
点击按钮不能隐藏Panel 到底错在哪????
...全文
597 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
飘哥(ptsroot) 2009-10-15
  • 打赏
  • 举报
回复
function PanelChange(p) {
if (p.style.display == "") //这地方有问题
p.style.display = "none";
else
p.style.display = "";
}
改正为
function PanelChange(p)
{
if(document.getElementById(p).style.display == "none")
{
document.getElementById(p).style.display = "";
}
else
{
doucument.getElementById(p).style.display ="none"
}
}


<input id="Button1" type="button" value="隐藏" onclick='PanelChange( "<%# Panel1.ClientID%>")' />
oodong 2009-02-12
  • 打赏
  • 举报
回复
还是没找到答案
Hertz_liu 2009-01-05
  • 打赏
  • 举报
回复
[Quote=引用楼主 taz01 的帖子:]
VBScript code
function PanelChange(p) {
if (p.style.display == "")
p.style.display = "none";
else
p.style.display = "";
}



页面有好几个Panel, 然后:
<input id="Button1" type="button" value="隐藏" onclick="PanelChange(" <%=Panel1.ClientID%>")" />
一打开这个页面就提示出错:行34 语法错误。
点击按钮不能隐藏Pan…
[/Quote]
这一句改成这样子:
<input id="Button1" type="button" value="隐藏" onclick="PanelChange('<%=Panel1.ClientID%>')" />
看出跟你原句的区别了吗,就是把你的双引号换成单引号
xuyiazl 2009-01-05
  • 打赏
  • 举报
回复


js的兼容性问题必然是浏览器大革命的产物...

除非微软或者Mozilla其一垄断全球浏览器...

ljsheng 2009-01-05
  • 打赏
  • 举报
回复
xuyiazl 2009-01-05
  • 打赏
  • 举报
回复
sp1234在胡扯了,又想扯走话题...你自己也说不出个所以然.
iloveaspnet2008 2009-01-05
  • 打赏
  • 举报
回复
回帖是一种美德!传说每天回帖即可获得 10 分可用分!
djf_1985 2009-01-05
  • 打赏
  • 举报
回复
把某个控件作为javascript函数的参数,直接给它控件ID就可以了
我在CS中写的
ddlSearch.Attributes.Add("onchange", "ddlSearchchange(this,textEmpNo,textEmpName);");
this就是自身控件ddlSearch
这样传回的就是一个对象了,不用再去obj=document.getElementById(p) 取得了
nihaimeiyoudenglu 2009-01-04
  • 打赏
  • 举报
回复
function PanelChange(p) {
if (p.style.display == "")
p.style.display = "none";
else
p.style.display = "";
}


你在的p只是一个ID Name
你要么用document.getElementById(p)
要么直接在
<input id="Button1" type="button" value="隐藏" onclick="PanelChange(this)" />
taz01 2009-01-04
  • 打赏
  • 举报
回复
- -
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 taz01 的回复:]
这个还分IE和火狐?为啥啊?
[/Quote]

ie支持直接写的dom对象的id来引用,不需要写document.getElementById('....')。

当然,实际上我还是建议你写繁复的那种。javascript就是这个“德性”,你通常必须写最繁复臃肿的那种代码才“兼容”性更好一些。
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 taz01 的回复:]
引用 8 楼 canduecho 的回复:

因为你的P只是ID,不是一个OBJECT
<script type="text/javascript">
function PanelChange(p) {
obj=document.getElementById(p)
if (obj.style.display == "")
obj.style.display = "none";
else
obj.style.display = "";
}
</script>

这样也会出错:
行19
错误:缺少对象。
不信的话…
[/Quote]

那你也太“新”了,加上个var才和javascript语法(使用变量之前要var声明一下)。

实际上,看回复只要理解意思就好了,不能够仅仅简单模仿。
taz01 2009-01-04
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 sp1234 的回复:]
引用 2 楼 sp1234 的回复:
把一对双引号改为单引号。


其实我写错了,对于ie来说,取消括号内部的一对双引号。
[/Quote]
这个还分IE和火狐?为啥啊?
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sp1234 的回复:]
把一对双引号改为单引号。
[/Quote]

其实我写错了,对于ie来说,取消括号内部的一对双引号。
taz01 2009-01-04
  • 打赏
  • 举报
回复
onclick="PanelChange(<%=Panel1.ClientID%>)"
这样才行,我也不知道为什么- -!
taz01 2009-01-04
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 canduecho 的回复:]

因为你的P只是ID,不是一个OBJECT
<script type="text/javascript">
function PanelChange(p) {
obj=document.getElementById(p)
if (obj.style.display == "")
obj.style.display = "none";
else
obj.style.display = "";
}
</script>
[/Quote]
这样也会出错:
行19
错误:缺少对象。
不信的话可以测试一下。我是个新手,对此也是是不解
daizhenbest 2009-01-04
  • 打赏
  • 举报
回复
最正规的写法:

<input id="Button1" type="button" value="隐藏" onclick="PanelChange(document.getElementGyId('<%=Panel1.ClientID%>'))" />

因为你function 中的参数传的是一个对象,所以要使用document.getElementById('...')来获取这个对象.
关于你说的去掉引号就可以执行,是因为这是个别浏览器的默认行为(把控件的id默认为这个控件的对象).
设备管理系统 2009-01-04
  • 打赏
  • 举报
回复
mark
etzrp 2009-01-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sp1234 的回复:]
把一对双引号改为单引号。
[/Quote]
obj=document.getElementById(p)
Fibona 2009-01-04
  • 打赏
  • 举报
回复
function PanelChange(cid) {
var p=document.getElementById(cid);
if(p==null)
return;
if (p.style.display == "")
p.style.display = "none";
else
p.style.display = "";
}

你传的控件ID,当然js代码报错了,需要获取控件对像之后才能操作
加载更多回复(9)

62,269

社区成员

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

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

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

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