<div class='unsubscribe'><a id='us$id' href='#' onclick='subscribe(u,$id);'>
<img src='/unsubscribe.jpg' alt='unsubscribe' /></a></div>
onclick如何将onclick函数中的第一个参数更改为's'?所以下次它会是这样的。
<div class='unsubscribe'><a id='us$id' href='#' onclick='subscribe(s,$id);'>
<img src='/unsubscribe.jpg' alt='unsubscribe' /></a></div>
我不会像你想的那样做。参见XY问题。
相反,您应该这样做的是跟踪用户的订阅状态,使用cookie或链接(data-state="s"
)上的标识符,并在函数中做笔记。
与其在HTML中设置onclick,不如在Javascript中设置。我假设你把所有代码都回显为双引号PHP字符串因为'us$id'
:
<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>
而不是改变onclick
中的字符串,你可以在javascript中改变它。这是如果你想改变整个页面的所有的s为u(不确定是否只有一个或如果这是你的意图)。
删除第一个参数:
<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';
}
...
}
一种方法是在文本上改变它;使用var el = document.getElementById('us$id');
检索元素,然后在el.attributes
中搜索.name
值为"onclick"的属性,并使用第二个函数调用将其子属性替换为新的TextNode
。
另一种方法是修改HTML,使subscribe同时获得u和s,并以某种方式(例如使用全局变量、静态变量等)记住是第一次还是第二次调用该方法。