2013-04-26 111 views
2

我一直在擺弄HTML最近,我有一個問題。HTML/Javascript範圍

有沒有辦法以其他元素的子範圍元素的id? 這很難描述,但這裏有一個例子。

<body> 
    <div id="a"> 
    <div id="inner"></div> 
    </div> 
    <div id="b"> 
    <div id="inner"></div> 
    </div> 
</body> 

我不知道這是否是合法的(因爲「內部」被宣佈兩次),但問題是:

假設我有一個網頁完整的正方形的div有自己的風格和固定定位(有點像視窗8地鐵), 我想能夠組特定平方成正方形的所有部件,這樣我可以使用JavaScript 集中在發言權的範圍中的元素,在僞代碼。

ClickMeButtonDiv.ClickMeButton.value = parseInt(ClickMeButton.value) + 1; 

總之,我想知道是否有可能組一個div到該分區的所有兒童,因爲如果我有一個頁面上100個方格做自己的事,它是一個頭痛讓所有由ID元素結合到全球範圍內...

有沒有辦法做到這一點?

提前致謝!

+2

沒有,'id'必須每頁唯一的。 – Artless 2013-04-26 09:26:04

+0

我明白,但我想知道是否有任何非ID的方式來處理這個問題,因爲如果我有許多不同的「範圍」,和IDS綁定到全球範圍內,則該頁面有效地成爲unmanagable。 – Dmitry 2013-04-26 09:27:09

+1

'id'是唯一的。改用'class'。 – Sandeep 2013-04-26 09:28:02

回答

4

你不能有非唯一的ID。儘管你可以使用class屬性。將id="inner"更改爲class="inner",如果您使用JQuery,則可以嘗試使用子選擇器。例如:

$("#a > .inner"); 

沒有jQuery的

document.getElementById('a').getElementsByClassName('inner')[0]; 
+0

是使用類還是id? – Dmitry 2013-04-26 09:31:04

+2

它選擇'ID =「A」'然後將所有'類=「內部」' – Artless 2013-04-26 09:32:02

+0

我覺得這個問題解決了,但我還是很好奇,如果這可以在純JavaScript來完成。 – Dmitry 2013-04-26 09:32:08

2

id必須是唯一的。您所描述的分組問題最好使用類來解決。

<div id="a"> 
    <div class="inner"></div> 
    </div> 
    <div id="b"> 
    <div class="inner"></div> 
    </div> 

如果你想從inner元素我強烈建議使用jQuery,因爲它可以讓你選擇由類元素讀出數值。

<div id="a"> 
    <input type="text" class="inner" value="1" /> 
</div> 
<div id="b">  
    <input type="text" class="inner" value="2" /> 
</div> 

JS:

$('#a input.inner').val(); // == 1 
$('#b input.inner').val(); // == 2 
+0

感謝這些例子,我希望可以在沒有JQuery的情況下完成,但這樣做看起來很混亂,正如我在前面的回覆中指出的那樣。雖然這不應該成爲問題,因爲使用像我之前提到的那樣複雜的東西可以充分利用JQuery。 – Dmitry 2013-04-26 23:29:07

+0

那麼,如果可以用jQuery來完成的話,那麼純JS也是可以的。但由於jQuery庫很容易使用,所以我會使用它。 ;) – Friederike 2013-04-27 11:58:30

+0

是的,但問題是,JavaScript不允許直接訪問嵌套類,這意味着你必須迭代所有元素來找到他們的類,然後進入該元素,然後遍歷該元素的元素並檢查它們類,當它比嵌套的兩層更深時,它會變得更加複雜,可能需要循環或遞歸。理想情況下,我希望能有一種方法來document.getElementByClass(「a」),getElementByClass(「b」)或類似document.getObject(「a.b」),但哦。 – Dmitry 2013-04-27 13:30:52