1

プロトタイプ フレームワークを使用して、特定の URL に基づいて '< div >' を非表示にしようとしています。サーバーサイドへのアクセス権がないので、やむを得ずプロトタイプでやる【プロトタイプを使用するプラットフォームの制限】。

プロトタイプフレームワークでこれを行う方法を誰かが教えてくれるかどうか疑問に思っていますか?

つまり、私はこれをやろうとしましたが、うまくいきません

Event.observe(window, 'load', function() {

var url = document.location.href;

if (url.indexOf('登録済み') >= 0) {
$$('#side-menu-right').hide(); }

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

});

いくつかの助けが好きですか?

PS - プロトタイプを使用したことはありません [jQuery man right here yo!]

4

2 に答える 2

0

私は文句を言うJS Binでテストケースを作成しました:

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

(プロトタイプの最新バージョンを使用)

使用時:

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

正しく動作します。を参照してください。

編集:関連する要素に到達する前に、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>
于 2010-02-28T17:19:19.430 に答える
0

変化する

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

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

お役に立てれば。

理由
1) ご覧のとおり、JQuery は CSS 表記を使用しますが、Prototype はそのままの Javascript を使用します (したがって、ID#side-menu-rightを使用する必要はありません)。div

2)StrutsPrototype使用し、使用$ない $$

于 2010-02-28T17:22:16.690 に答える