2017-07-16 169 views
0

我有一個包含多個div的頁面,每個div都有一個來自數據庫的ID,每個div都有一個像按鈕,我想要做的是當我點擊像按鈕ID傳遞在我的函數中的參數,這裏是我迄今爲止嘗試:傳遞ID作爲參數

function addLike
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="myID" onClick="addLike()"> 
 
<button type="button">Like</button> 
 
</div> 
 

 
<div id="myID" onClick="addLike()"> 
 
<button type="button">Like</button> 
 
</div> 
 

 
<div id="myID" onClick="addLike()"> 
 
<button type="button">Like</button> 
 
</div> 
 

 
<div id="myID" onClick="addLike()"> 
 
<button type="button">Like</button> 
 
</div> 
 

 
<div id="myID" onClick="addLike()"> 
 
<button type="button">Like</button> 
 
</div> 
 

 
<div id="myID" onClick="addLike()"> 
 
<button type="button">Like</button> 
 
</div>

+4

文檔中的ID應該是唯一的。 – lilezek

+0

@lilezek正如OP提到的,ID來自DB,所以我猜它們是唯一的。我認爲,在代碼中,這只是爲了說明。 – Junaid

+0

1)'id'屬性必須是唯一的,儘管我假設它們來自你的代碼,因爲它們來自數據庫。 2)將點擊處理程序放在'button'上。將click處理程序放在應該單擊的元素的父級上是沒有意義的。 3)http://api.jquery.com/click –

回答

1

的ID必須是唯一的。

每當你定義一個內聯的單擊事件處理您可以考慮通過以下兩個變量:

  • :當前元素
  • 事件:事件對象

function addLike(ele, e) { 
 
    console.log('ID: ' + ele.id); 
 
}
<div id="myID1" onclick="addLike(this, event)"> 
 
    <button type="button">Like</button> 
 
</div> 
 

 
<div id="myID2" onclick="addLike(this, event)"> 
 
    <button type="button">Like</button> 
 
</div> 
 

 
<div id="myID3" onclick="addLike(this, event)"> 
 
    <button type="button">Like</button> 
 
</div> 
 

 
<div id="myID4" onclick="addLike(this, event)"> 
 
    <button type="button">Like</button> 
 
</div> 
 

 
<div id="myID5" onclick="addLike(this, event)"> 
 
    <button type="button">Like</button> 
 
</div> 
 

 
<div id="myID6" onclick="addLike(this, event)"> 
 
    <button type="button">Like</button> 
 
</div>

+0

P.S:你不一定需要傳遞'event'。在這個具體情況下導致無用。 2.因爲即使沒有傳遞參數,也可以使用'event'。 –

+1

@ RokoC.Buljan我知道。最好的方法是使用addEventListener或jquery。這只是一個答案。最好的方法是儘量避免內聯代碼。而且,因爲我不知道用法.....我說:你可能而不是你需要。我贊同你。相信我。非常感謝您的提示。 – gaetanoM

0

我建議你從你的div刪除的onClick:

<div id="myID"> 

,並在每個按鈕的onclick插入:

所有的
<button onclick="addLike(this.parent.id)"> 
0

首先,你只能有一個ID在一個頁面。所以我會首先建議你使用類而不是ID。現在,如果您更願意使用ID,那麼每個ID都應該是唯一的。你應該有

<div id="id1" onClick="addLike(this.id)"></div> 
<div id="id2" onClick="addLike(this.id)"></div> 
+0

通過使用'this.id'你只是限制自己。只需傳遞'this',而不是在函數中使用你喜歡/需要的任何屬性。 –

+0

謝謝兄弟!好的 –

0

好吧,據我所見,你正試圖做一個像按鈕。 爲此,我建議不要將ID作爲<button>作爲其值。 而對於按鈕操作,您必須創建一個表單,其操作將在其他PHP或任何其他服務器端語言上進行。所以對於你的問題,這裏是解決方案。

<form action="like.php" method="POST"> 
<div id="myid1"> 
    <button value="myid1" name="button1">LIKE</button> 
</div> 
<div id="myid2"> 
    <button value="myid2" name="button2">LIKE</button> 
</div> 
</form> 

現在,當您想要將值傳遞給函數時,您可以通過其各自的name屬性使用按鈕的值。您需要爲每個按鈕設置不同的名稱。

+0

**它的'2017 **。你最終可以在你的'form'後備中推薦一些AJAX作爲超集,而不是*簡單地*指向某個'like.php'頁面的用戶... –

+0

抱歉,我是AJAX的新手。沒有關於它的想法。我可以告訴你的PHP腳本 – Ashish