2012-07-06 170 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>