如何在对象中使用addEventListener

时间:2015-09-14 06:53:19

标签: javascript

我正在尝试在javascript对象中使用 addEventListener 而我的代码不正确。说实话,我并不完全确定如何正确编码。就目前而言,' button1'我尝试定义addEventListener时无法识别。有人可以建议吗?

HTML

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title> </title>
        <style>
            #wrap{
            margin-top: 30px;
            margin-left: 30px;
            }
            .btn{
            font-size: 20px;
            width: 65px;
            height: 45px;
            }
        </style>
    </head>
    <body>
        <div id="wrap">
            <button id="btn1"  class="btn">btn1</button>
            <button id="btn2" onclick="pub.moveRight('btn2','60px')" class="btn">btn2</button>
        </div>
    </body>
    <script src="test40.js"></script>
</html>

我的 JS

var pub = {
    button1: function () {
        return document.getElementById('btn1');
    },

    btn1EventHandler: function () {
        button1.addEventListener('click', function () {
            changeColor('btn1', '#33FFFF');
        });

    }(),

    changeColor: function (id, color) {
        var element = document.getElementById(id);
        element.style.backgroundColor = color;
    },

    name: 'smith',
    moveRight: function (id, pixels) {
        var ele = document.getElementById(id);
        ele.style.marginLeft = pixels;
    }
};

1 个答案:

答案 0 :(得分:0)

分离 JavaScript和HTML是一种很好的风格。在一个对象中,首先得到元素:

var obj = {
    btn1: document.getElementById("btn1"),
    btn2: document.getElementById("btn2"),
    ...
}

然后应该做的事情的函数:

var obj = {
    btn1: document.getElementById("btn1"),
    btn2: document.getElementById("btn2"),
    ...
    changeBgColor: function(id, bgColor) { ... },
    moveRight: function(id, width) { ... },
    ...
}    

最后将点击事件添加到具有的特定按钮。 指的是中的变量

var obj = {
    btn1: document.getElementById("btn1"),
    btn2: document.getElementById("btn2"),
    ...
    changeBgColor: function(id, bgColor) { ... },
    moveRight: function(id, width) { ... },
    ...
    addEvent: function() {
        this.btn1.addEventListener("click", function() {
            obj.moveRight(...);
        });
    }
}    

obj.addEvent();

Demo