2012-07-06 88 views
-1

我想添加onclick方法來鏈接。簡單的Javascript onclick問題

當用戶點擊linkA和a--當用戶單擊鏈接B時,無論a值是什麼,我都想做一個++。

我的代碼:

JS

var a=0; 

function swapPost(a){ 

//I want to make a++ when user click linkA; 
//a-- when user click linkB 
//not sure how to do this 

    if(a>10){ 
    a=0; 
    } 
    if(a<0){ 
    a=0; 
    } 

} 

swapPost(a); 

的Html

<a href="#" onclick="swapPost(a)">LinkA</a> 
<a href="#" onclick="swapPost(a)">LinkB</a> 

我想知道如果有人能幫助我在這一個。非常感謝。

+0

你應該總是... ** **總是在你的屬性使用引號。這裏是案例。 – Jon 2012-07-06 02:47:34

+0

對,因爲它使用'eval()'如果我沒有錯......在任何情況下,你所做的最好的做法是將你的js從html中分離出來,而忘記醜陋的內聯腳本。 – elclanrs 2012-07-06 02:49:15

回答

2

,而不是作爲一個參數傳遞a,傳中被點擊的鏈接,通過它的ID(你還沒有定義) 。通過this進入該功能。

<a id='linka' href="#" onclick='swapPost(this)'>LinkA</a> 
<a id='linkb' href="#" onclick='swapPost(this)'>LinkB</a> 

var a=0;  
function swapPost(nodeClicked){ 
    // Check the id of the node passed to the function. 
    if (nodeClicked.id == 'linka') { 
    a++; 
    } 
    else if (nodeClicked.id == 'linkb') { 
    a--; 
    } 
    else return; 

    // Set to zero if outside your bounds 
    if(a>10){ 
    a=0; 
    } 
    if(a<0){ 
    a=0; 
    } 
} 

Here it is in action,登錄到控制檯...

一般來說,更好的做法是綁定功能的事件,而不是將其內嵌代碼到屬性。由於onclick中的this指的是被點擊的節點,因此您實際上不需要將其作爲參數傳遞。然後,您可以綁定onclick事件而不進行內聯,並在裏面調用this

<a id='linka' href="#">LinkA</a> 
<a id='linkb' href="#">LinkB</a> 

var a=0;  
var swapPost = function(){ 
    // Check the id of the node passed to the function. 
    if (this.id == 'linka') { 
    a++; 
    } 
    else if (this.id == 'linkb') { 
    a--; 
    } 
    else return; 

    // Set to zero if outside your bounds 
    if(a>10){ 
    a=0; 
    } 
    if(a<0){ 
    a=0; 
    } 
} 
// Bind the function to the links 
document.getElementById('linka').onclick = swapPost; 
document.getElementById('linkb').onclick = swapPost; 

Here's the updated version in action

+0

不建議使用內聯JavaScript。 – 2012-07-06 02:51:51

+0

@Derek不,但這也不能解決OP的問題。我會馬上進入事件綁定。 – 2012-07-06 02:52:41

+0

非常好,清晰。謝謝sooo多! – Rouge 2012-07-06 03:02:06

1
<a href="#" id="a">LinkA</a> 
<a href="#" id="b">LinkB</a>​ 

JS

<script type="text/javascript"> 
window.onload=function(){ 
    var a=0; 
    var els=document.getElementsByTagName('a'); 
    for(i=0;i<els.length;i++) 
    { 
     (function(i){ 
      els[i].onclick=function(){ 
       if(this.id=='a') a++; 
       else a--; 
       a = a < 0 ? 0 : (a > 10 ? 0 : a); 
       return false; 
      } 
     })(i); 
    } 
} 
</script> 

DEMO.

+0

嗯..你的回答沒有解決我的問題。我需要觸發一個++或一個 - 不管它是什麼值。 – Rouge 2012-07-06 02:49:46

+0

你以前的問題並不明顯。 – 2012-07-06 02:50:53

+0

對不起。 – Rouge 2012-07-06 02:52:51

0

試試這個: 的Javascript:

var a=0; 
function swapPost(val){ 
    a=a+val; 
} 

HTML:

<a href="#" onclick='javascript:return swapPost(1);'>LinkA</a> 
    <a href="#" onclick='javascript:return swapPost(-1);'>LinkB</a>