2011-08-22 114 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"),并在该功能中记录。