Javascript 隐藏/显示<;部门>;根据原型中的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

我试图使用原型框架来隐藏基于特定URL的“
”。我没有访问服务器端的权限,所以我别无选择,只能使用prototype[平台使用prototype的限制]

想知道是否有人能告诉我如何在原型框架中实现这一点

i、 我试着这样做,但没有成功

事件。观察(窗口“加载”, 函数(){

var url=document.location.href

如果(url.indexOf('registered')>= 0){
$$(“#右侧菜单”).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();