2013-02-08 40 views
-1

我希望在這裏發佈很多特定的代碼並不是問題,但我想它會更好地解釋如果每個人都可以看到它,所以我會給你我的代碼,然後我會解釋我的問題。函數被調用的鏈接的ID從

我的代碼:

function addBeGoneLinks() { 
    var beGoneClassElems; 
    var beGoneSpan; 
    var beGoneLink; 
    var beGonePrintSafe; 
    var spacesSpan; 
    //var middotSpan = document.createElement ('span'); 

    var interactionContainer = document.getElementsByClassName('feedItemInteractionContainer'); 

    for (var i=0; i<children.length; i++) 
    { 
     beGonePrintSafe = false; 

     beGoneClassElems = children[i].getElementsByClassName('beGone') 

     beGonePrintSafe = true; 


     if (beGoneClassElems.length == 0) 
     { 
      beGoneLink = document.createElement('a'); 
      beGoneLink.href = 'javascript:void(0);'; 
      beGoneLink.appendChild(document.createTextNode('Be Gone')); 
      beGoneLink.className = 'beGone'; 
      beGoneLink.id = 'beGoneLink' + i.toString(); 
      beGoneLink.addEventListener ("click", function() {beGone();}, false);//This line! 
      beGoneLink.align = 'right'; 

      spacesSpan = document.createElement('span'); 
      spacesSpan.innerHTML = ' - '; 

      if (interactionContainer[i] != undefined) 
      { 
       interactionContainer[i].appendChild(spacesSpan); 
       interactionContainer[i].appendChild(beGoneLink); 
      } 
     } 
    } 
} 

這裏我從我的工作Greasemonkey的腳本功能。當點擊其中一個鏈接時,我的目標是讓它調用功能beGone(),其中除了其他事項外,將幾個父母的整個元素刪除,從而刪除他們的兄弟姐妹,他們的父母和他們的父母的兄弟姐妹,以及一個之後的兩個級別。

我的想法只是獲得被按下的鏈接的id並將其傳遞給beGone(),這樣我就可以讓父母使用它的id,但我不知道該怎麼做。我能夠通過它調用的函數傳遞鏈接的標識嗎?如果沒有,有沒有其他方法可以做到這一點?

我不確定我是否缺少一些非常簡單的解決方案,但是我一直無法在網絡上找到一個根,尤其是因爲我不確定如何搜索這個特定問題。

+0

通「這種」與函數的參數,並試圖獲得該元素的ID(這裏鏈接) – Rinku

+0

我有一種感覺,這將與「這個」有關。所以只有關鍵字「這個」,沒有別的? – user2044929

+0

是的..沒有其他人 – Rinku

回答

1

試試這個:

beGoneLink.addEventListener("click", beGone, false); 

beGone = function (evt) { 
    evt.target; // evt.target refers to the clicked element. 
     ... 
} 


然後可以使用evt.target.idevt.target.parentNode

+0

+1正確的做法。加了一點;如果您反對,請將其重新編輯。 –

+0

謝謝,我正在考慮添加一些類似於你添加的內容,但是在這個問題中還有很多其他的參考... – Teemu

+0

PS:第一行可以簡化爲beGoneLink.addEventListener(「click」,beGone,false) ;'。事件參數自動傳遞。這種方法也可以減少潛在的內存泄漏。 –