根据Prototype </div>中的URL隐藏/显示<div>

时间:2010-02-28 17:06:45

标签: javascript url prototypejs show-hide scriptaculous

我正在尝试使用原型框架来隐藏'&lt; div&gt;'基于特定的URL。我没有访问服务器端 - 所以我别无选择,只能使用原型[使用原型限制平台]。

想知道是否有人可以告诉我如何在原型框架中执行此操作?

即。我试图这样做但不起作用

  

Event.observe(窗口,'加载',   function(){

     

var url = document.location.href;

     

if(url.indexOf('registered')&gt; =   0){
  。$$( '#侧面菜单右')隐藏(); }

     

if(url.indexOf('login')&gt; = 0)   {$$('#side-menu-left')。hide();   }

     

});

喜欢一些帮助?

P.S - 从未使用过Prototype [jQuery man就在这里哟!]

2 个答案:

答案 0 :(得分:0)

我刚刚在JS Bin做了一个测试用例抱怨:

Exception thrown: $$("#hello").hide is not a function
Caused by line (23/21): $$('#hello').hide();

(使用Prototype的最新版本)

使用时:

$('hello').style.display = "none";

它可以正常工作,请参阅example

编辑:我调整了 example on JS Bin ,以便在到达相关元素之前有条件地将类名添加到body。使用

.registered-user #hello { display: none; }

该元素根本不显示。这不是最简洁的解决方案,因为您必须在文档中间放置一些script,但它可以正常工作。如果有人知道更好的解决方案,请告诉我们。

<!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>

答案 1 :(得分:0)

更改

$$('#side-menu-right').hide();

$('side-menu-right').hide();

希望这有帮助。

<强>原因
1)正如您所看到的,JQuery使用CSS表示法,而Prototype是直接Javascript(因此#side-menu-right没有div带有ID)。

2)StrutsPrototype使用$ $$