关于JS修改a标签的onclick方法后修改的JS方法不能使用的问题?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于JS修改a标签的onclick方法后修改的JS方法不能使用的问题?相关的知识,希望对你有一定的参考价值。

本人小白,想问下为什么不行,是本来就这样的问题吗?

<a style="cursor:hand" onclick="onTest(this);">按钮</a>

JS原码用的JQUERY
function onTest(obj)
$(obj).attr("onclick","test('123');");

function test(id)
alert(id);


点击按钮后,onclick方法改变成test('123')了,但是再点击不能调用test方法。。不能alert。。

弱弱的求解。。
不好意思。。忘说是用IE8了。。

参考技术A

需要是js'方法有效,这样的话,a标签的超链接就不可以被触发,因此有两种解决方法。

    href="javascript:void()"这样的话,a的超链接就成为了没有作用的空值。

    在js方法内部返回一个false值,这样a在被点击的时候方法被触动,接着执行完后返回false给a表示超链接不被启用。

    第二种方法好一些,因为可以平稳退化。

参考技术B

给你个例子吧

<a href="javascript: void(0);" id="demo">按钮</a>

$(document).ready(funciton()
    $('#demo').bind('click', evenClick);//第一次点击执行evenClick方法
);
function evenClick() 
    //你可以在这里做你想做的事情,比如alert(1);
    alert(1);
    $(this).unbind('click').bind('click', oddClick);//重新绑定click事件

function oddClick() 
    //第二次点击的时候你要做什么就写这里,比如alert(2);
    alert(2);
    $(this).unbind('click').bind('click', evenClick);//重新绑定click事件

以上代码没测试,但是应该是点击按钮的时候先弹出1,然后弹出2,再弹出1...

参考技术C $(obj).attr("onclick","test('123');");
改成
$(obj).attr("onclick",function()
test('123');
);追问

可以不直接运行test吗

追答

你点击了按钮以后,obj就拥有了click事件,这个时候,你再点击Obj 对象时,就会触发这个事件。

你描述一下,我看看你打算实现的功能

追问

是这样的,我是想点击一个A标签,然后运行TESTA方法,把一个图片隐藏了,并改变A标签的方法,这样再点击,就会变成TESTB方法,作用是把图片再显示出来。。

追答

$(obj).click(function ()
$(imgObj).toggle();
);
这样不就可以了吗

本回答被提问者采纳
参考技术D 我用Chrome一直按都没问题追问

不好意思。。忘说是用IE8了。。

追答

firefox、chrome、ie6都没事....

第5个回答  2013-05-28 反正我这里是没问题的 可能是你的哪个地方出现问题了 请你发完整的html 或者删掉无关代码再检查

以上是关于关于JS修改a标签的onclick方法后修改的JS方法不能使用的问题?的主要内容,如果未能解决你的问题,请参考以下文章

js刷新页面

JavaScripta标签onclick传递参数不对,A标签调用js函数写法总结

js如何修改form标签中action和target参数

如何用js修改一个自定义的标签的属性值

JS控制a标签显示的文本文字的改变,但不产生链接到其他页:如默认的文本是“修改”,点击后变为“关闭”

如何通过 js 修改微信浏览器的title