2011-08-22 110 views
1
<div class='unsubscribe'><a id='us$id' href='#' onclick='subscribe(u,$id);'> 
<img src='/unsubscribe.jpg' alt='unsubscribe' /></a></div> 

onclick如何將onclick函數中的第一個參數更改爲's'?所以下一次它會是這樣的。更改函數參數onclick?

<div class='unsubscribe'><a id='us$id' href='#' onclick='subscribe(s,$id);'> 
<img src='/unsubscribe.jpg' alt='unsubscribe' /></a></div> 
+1

對不起,有什麼問題嗎?還是你只是想告訴大家你的意圖在開發你的應用程序,我們一無所知? – DaveRandom

+0

我會將狀態存儲在某個變量中......通過字符串處理更改'onclick'屬性實際上不是一個乾淨的方法。 –

回答

0

不是在HTML中設置onclick,而是使用Javascript很快完成。我假設你是呼應所有的代碼,因爲'us$id'一個雙引號PHP字符串:

<div class='unsubscribe'> 
    <a id='us$id' href='#'> 
     <img src='/unsubscribe.jpg' alt='unsubscribe' /> 
    </a> 
</div> 
<script type='text/javascript'> 
    document.getElementById('us$id').onclick = function(){ 
     // Subscribe u 
     subscribe(u, $id); 

     // Set all future clicks to subscribe s 
     this.onclick = function(){ 
      subscribe(s, $id); 
     }; 
    }; 
</script> 
+0

我試過這個,但現在沒有什麼似乎發生?我檢查過螢火蟲,沒有任何反應。 – user892134

+0

假設你的PHP輸出正確,上面的代碼工作:http://jsfiddle.net/Paulpro/YX4Zk/ 也許'u'和's'尚未定義,當你到達該功能。 – Paulpro

0

而是在onclick改變串的,你可以在JavaScript本身改變它。這是如果你想在整個頁面中把所有的變成你的(不確定是否只有一個或者你的意圖是什麼)。

刪除第一個參數:

<div class='unsubscribe'><a id='us$id' href='#' onclick='subscribe($id);'> 
<img src='/unsubscribe.jpg' alt='unsubscribe' /></a></div> 

然後換subscribe()這樣:

function subscribe(id) 
{ 
    // doing "static" variable in javascript 
    if (typeof this.foo == 'undefined') 
    { 
     this.foo = 's'; 
    } 
    else 
    { 
     this.foo = 'u'; 
    } 

    ... 
} 
0

的一種方法是,以文本方式改變它;使用var el = document.getElementById('us$id');來檢索該元素,然後在el.attributes處搜索值爲「onclick」的.name值的屬性,並用第二個函數調用將其子元素替換爲新的TextNode

一種不同的方法是改變HTML,以便訂閱會同時得到u和s,並且以某種方式(例如使用全局變量,靜態變量等)記住這個方法是第一次還是第二次被調用。

+0

-1。不建議更改onclick textNode,因爲它會導致問題。 –

1

我不會像你想要的那樣做。請參閱XY Problem

取而代之的是,您應該如何跟蹤用戶的訂閱狀態,或者使用cookie或鏈接上的標識(data-state="s"),並在該功能中記錄。