2011-01-24 30 views
4

私はウェブサイトを構築していますが、いくつかのリスト要素を持つソートされていないリストがあります。これらのリスト項目のいくつかをクリックすると、<body>のIDがid="index"からid="collection"に変更されます。htmlのid属性を変更する方法

これを行う最も効率的な方法は何ですか?

  1. JavaScriptを使用する必要がありますか?
  2. {% block %}にすべてのボディコードを入れて、特別なリストアイテムをクリックすると上書きする必要がありますか?
  3. 他の方法はありますか?

答えて

6

だろう

document.body.id = "collection"; 

だろうただし、IDをページ内の他のIDと競合する可能性を避けるために、クラスを使用する方がよい場合があります。本文に<body>という要素が1つしかなく、JavaScriptの場合はdocument.body、CSSの場合はbodyで参照できるため、本文にIDを付けることは非常に便利です。

ページ全体をリロードせずにページ内の要素を変更する場合は、JavaScriptのみが選択できます。変更がページの機能にとって不可欠な場合は、JavaScript以外の代替手段も提供する必要があります。

+2

+1 - 誰が投票したのかわからないが厳しいように見えた。私は身体にIDを与えることはほとんど役に立たないことに同意します。 –

+0

Timと同意すると、IDを変更するのが間違っているようですが、IDを変更する必要はありません。この場合、クラスを変更することは、特にあなたがそれを使用している場合は、異なるCSSが適用されるようにしたい –

0

「効率的」とは何ですか? JavaScriptを使用すると、idがサーバーに別のHTTP要求を行わずに変更されるため、ユーザーはページがリロードされるのを待つ必要がありません。

ただし、これらのリスト項目の1つをクリックしてページを再読み込みまたは再読み込みすると、リストはページが読み込まれたときの状態に戻ります。それはあなたの状況に最適ではないかもしれません。

0

私はjQueryを使って、$('#index').attr('id', 'collection');という行を使ってやります。

+0

質問はjQueryタグで質問されておらず、質問者はjQueryについて言及していませんでした。これは、jQueryを使用せずに理解し実装するほうがずっと簡単です。 – Sparafusile

+0

jQueryはJavascriptのサブセットです。 IDは "HTMLで"どのように変更するかを尋ねてからタグ付けされており、Javascriptについて言及しているので、この質問はすでに統合失調症である。 – chaos

+0

私たちがヘアを分割している場合、jQueryは* JavaScriptの*サブセットではなく* JavaScriptで書かれた*フレームワークです。それをサブセットと呼ぶと、jQueryを書くときに使用できないJavaScriptの部分があることを意味していますが、それは当てはまりません。 –

0
document.getElementById("index").id = "collection"; 
1

私はJavaScriptを使用する必要がありますか?

はい、これは、クリックイベント中に発生させたいという知識に基づいています。最も効率的な方法はあまり効率的な方法は、本体のIDを変更する最も簡単かつ最良の方法は

document.body.id = "collection"; 

で、純粋にJavaScriptのpersepctiveから

document.getElementById("index").id = "collection"; 
関連する問題