Javascript 隐藏/显示<;部门>;根据原型中的URL
我试图使用原型框架来隐藏基于特定URL的“Javascript 隐藏/显示<;部门>;根据原型中的URL,javascript,url,prototypejs,show-hide,scriptaculous,Javascript,Url,Prototypejs,Show Hide,Scriptaculous,我试图使用原型框架来隐藏基于特定URL的“”。我没有访问服务器端的权限,所以我别无选择,只能使用prototype[平台使用prototype的限制] 想知道是否有人能告诉我如何在原型框架中实现这一点 i、 我试着这样做,但没有成功 事件。观察(窗口“加载”, 函数(){ var url=document.location.href 如果(url.indexOf('registered')>= 0){ $$(“#右侧菜单”).hide();} if(url.indexOf('login')>=0
”。我没有访问服务器端的权限,所以我别无选择,只能使用prototype[平台使用prototype的限制]
想知道是否有人能告诉我如何在原型框架中实现这一点
i、 我试着这样做,但没有成功
事件。观察(窗口“加载”,
函数(){
var url=document.location.href
如果(url.indexOf('registered')>=
0){
$$(“#右侧菜单”).hide();} if(url.indexOf('login')>=0) {$$('#左侧菜单').hide(); } })) 需要帮忙吗
注-从未使用过原型[jQuery man right here yo!]我只是做了一个测试用例,抱怨:
$$(“#右侧菜单”).hide();} if(url.indexOf('login')>=0) {$$('#左侧菜单').hide(); } })) 需要帮忙吗
注-从未使用过原型[jQuery man right here yo!]我只是做了一个测试用例,抱怨:
Exception thrown: $$("#hello").hide is not a function
Caused by line (23/21): $$('#hello').hide();
(使用最新版本的原型)
使用时:
$('hello').style.display = "none";
它工作正常,请参阅
EDIT:我调整了,在到达相关元素之前,有条件地将类名添加到主体中。使用
.registered-user #hello { display: none; }
元素根本不显示。这不是最巧妙的解决方案,因为你必须在文档的中间扔一些<代码>脚本<代码>,但是它是有效的。如果有人知道更好的解决方案,请告诉我
<!DOCTYPE html>
<html>
<head>
<script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/prototype/1/prototype.js"></script>
<meta charset=utf-8 />
<title>JS Bin</title>
<style>
.registered-user #hello { display: none; }
</style>
</head>
<body>
<script>
if (document.location.href.indexOf('registered')>=0)
$$('body')[0].addClassName('registered-user');
</script>
<p id="hello">Hello World</p>
</body>
</html>
JS-Bin
.注册用户#你好{显示:无;}
if(document.location.href.indexOf('registered')>=0)
$$('body')[0].addClassName('registered-user');
hello World
更改
$$('#side-menu-right').hide();
到
希望这有帮助
原因
1)如您所见,JQuery使用CSS表示法,而Prototype是纯Javascript(因此没有带有ID的div的#右侧菜单)
2) Struts
和Prototype
使用$
和不使用$嘿,谢谢你的回复:)有什么解决方法吗?我甚至不确定这在原型中是否正确谢谢!有一件事(现在可以了))但是当页面加载时,javascript就会出现。有没有办法使用“文档(准备就绪)”之类的东西,或者即使它还没有准备就绪?[不确定原型中是否有这样的功能]@Thomas:你是说闪烁(元素被显示并立即隐藏)?只有在绘制所述元素之前更改某些CSS规则时,才能防止出现这种情况。我举个例子。非常感谢:)是的,基本上元素出现了-“然后”它是隐藏的传说-非常感谢伟大的答案。真的很感激!嘿,谢谢-我一直收到$$('side-menu-right').hide();这不是一个函数吗?我真的不确定?[ps-同时使用#和不使用]对于原型,您可以使用document.observe(“dom:loaded”,function(){…});作为一个“onready”函数。嘿,非常感谢:)我的问题是,我使用的平台上的一些脚本是先加载的,系统会自动将我的脚本推到底部。页面元素加载,然后我的菜单被隐藏[延迟]。有什么聪明的办法来解决这个问题吗?
$('side-menu-right').hide();