将多个onclicks压缩成一个

时间:2016-05-14 09:36:29

标签: javascript javascript-events oneclick

这是我目前的代码:

document.getElementsByName('links')[0].onclick = function (event) {
event = event || window.event;
var target = event.target || event.srcElement,
    link = target.src ? target.parentNode : target,
    options = {index: link, event: event},
    links = this.getElementsByTagName('a');
blueimp.Gallery(links, options);
};

document.getElementsByName('links')[1].onclick = function (event) {
event = event || window.event;
var target = event.target || event.srcElement,
    link = target.src ? target.parentNode : target,
    options = {index: link, event: event},
    links = this.getElementsByTagName('a');
blueimp.Gallery(links, options);
};

我意识到这个副本和粘贴非常低效(只有当我需要添加[2].onclick[3].onclick等时才会变得更糟,所以有没有办法可以压缩所有的他们在一起?

对于javascript来说,我是一个完全无能的初学者,所以如果这个问题非常简单,请原谅我。

感谢您的时间和帮助! DEE

1 个答案:

答案 0 :(得分:0)

抛开jQuery,你需要做的就是封装重复的代码,例如:

<script>
var elements = document.getElementsByName('links');
Array.prototype.forEach.call(elements, function (el) {
    el.onclick = function (event) {
        event = event || window.event;
        var target = event.target || event.srcElement,
            link = target.src ? target.parentNode : target,
            options = {index: link, event: event},
            links = this.getElementsByTagName('a');
        blueimp.Gallery(links, options);
    };
});
</script>