2016-11-08 20 views
4

我對編碼一般是全新的。我已經開始了HTML,CSS和JavaScript的基礎知識。儘管我通過使用#idname選擇了所有ID,但爲什麼不能更改所有ID?

我有兩個段落:

<script type="text/JavaScript"> 
    $('#title1').html('Changed!'); 
</script> 

第二個不:

<p id="title1">Change this</p> 
<p id="title1"> Change this too! </p> 

雖然第一個被自動改變。但不是嗎?由於所有#title1正在改變?我的問題是onclick版本。第一段在點擊時發生變化,第二段不變。

<p id="title3" onclick="sayGoodbye();">Toggle this Hello - Goodbye</p> 
<p id="title3" onclick="sayGoodbye();">Thing to click on</p> 
<script type="text/javascript"> 
    function sayGoodbye(){ 
     $("#title3").html('Goodbye'); 
     $("#title3").click(function(){ 
      $("#title3").html("Hello again!"); 
      $("#title3").off("click"); 
     }); 
    } 
</script> 
+1

ID必須是唯一的。 – SLaks

+0

問題是你的'id'屬性。它們必須是唯一的 - 你不能有多個元素共享它們。要做到這一點,請使用'class'代替 –

+0

另外請注意,您不應該使用過時的'on *'事件屬性。使用不顯眼的點擊處理程序,就像你在第二個例子中一樣,只要將它們放在'document.ready'中,而不是它們自己的函數 –

回答

3

當你通過ID選擇一個元素時,只有第一個被選中,因爲你只能在一個元素上使用一個ID!每個ID只能在頁面上使用一次!

如果你需要通過'某些東西'來獲得一堆元素,那就'按類'來做。

$(".title1").html("Changed!");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<p class="title1">Change this</p> 
 
<p class="title1"> Change this too! </p>

2

ID屬性具有爲對於每個HTML標記唯一的。您可以使用class屬性來處理多個標籤。

2
  • id屬性應該是唯一的,至少在同級別的子樹。
  • 改爲使用class,並使用$(this)收聽.click()以得到 當前點擊的元素。
  • 如果要使用onclick屬性傳遞函數,請使用this傳遞單擊的元素,如onclick="sayGoodbye(this);"

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<p class="title3" onclick="sayGoodbye(this);">Toggle this Hello - Goodbye</p> 
 
<p class="title3" onclick="sayGoodbye(this);">Thing to click on</p> 
 

 
<script type="text/javascript"> 
 
    function sayGoodbye(t){ 
 
     $(t).html('Goodbye'); 
 
     $(t).click(function(){ 
 
      $(this).html("Hello again!"); 
 
      $(this).off("click"); 
 
     }); 
 
    } 
 
</script>

相關問題