JavaScript 能把事件都写在一起吗?
怪我咯
怪我咯 2017-04-11 09:11:54
[JavaScript讨论组]
<body>
    <p id="one" >aa</p>
    <p id="two">bb</p>
    <p id="three">cc</p>
    <p id="four">dd</p>
</body>

<script>
one.onclick=function djh1()
{
    alert( "aaaaaaa" );
}

two.onclick=function djh2()
{
    alert( "bbbbbbb" );
}

three.onclick=function djh3()
{
    alert( "ccccccc" );
}

我想让所有 onclick 在一起
目的是想让 点击事件和 function 分开,因为万一function 好几百行,那看起来多乱呀!

也不想让点击事件出现在 HTML标签里,因为改的时候,还得从 html 找!

//事件在一起:
one.onclick...
two.onclick...
three.onclick...


//function 在一起:
function djh1()...
function djh2()...
function djh3()...

该怎么改呢?

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(5)
高洛峰
// jquery 绑定在p 标签下

var func = function() {
    alert($(this).text());
};

$('p').on('click',func);

//or

var func = {
    'func1': function() {...},
    'func2': function() {...},
}
$('p').on('click',function() {
    func['func' + ($(this).index() + 1)]();
});

// or not jquery

var els = docuemnt.querySelectorAll('p');

els.forEach(function(el) {
    el.addEventListener('click',func);
})
伊谢尔伦

每个p上放个onClick事件,调用相同的方法,传不同的id作为参数,在方法里边判断id,根据id给出对应的逻辑。这种是把所有类似的function都合并成一个function。

$('p').on('click',onpClick1)

function onpClick1(){
    //do something
}

这种就可以达到你说的效果了,注意编号。

怪我咯

var oneFun(){};
var twoFun(){};
var threeFun(){};

one.onclick=oneFun();
two.onclick=twoFun();
three.onclick=threeFun();

这样?

或者,这样?
var funs={

one:function(){},
two:function(){},
three:function(){}

}
one.onclick=funs.one;
two.onclick=funs.two;
three.onclick=funs.three;

PHP中文网

把p 标签统一加一个 class 然后循环

大家讲道理

建议“G_Koala_C”思路,比较好,更简洁。。。所有的p都加click事件,里面根据当前id来加载不同的业务逻辑

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号