用js该如何自己写一个onchang事件?

作为一个写java的,对js不是很了解,只知道操作dom节点和简单的事件,今天要我写一个类似onchange事件功能的函数,搞得我一脸懵逼,求思路,有代码或者实例更好,可能没表达清楚,我不是问怎么用onchangge,基本事件的用法我还是会的,但是现在让我用JS代码写一个onchange功能一样的函数,跪求大神~~~

阅读 3.8k
6 个回答

我曾经做过类似自制编辑器的东西,是这种自定义事件

  /**
   * 事件类
   */
  var Event = function() {
    this.events = {
      change: []
    };
  };
  Event.prototype = {
    // 新增监听事件
    addListener: function(type, func) {
      if (this.events[type] === undefined) this.events[type] = [];
      this.events[type].push(func);
    },
    // 激活事件
    fireEvent: function(type) {
      if (this.events[type] === undefined) {
        throw new Error(type + 'in events is undefined');
      }
      var events = this.events[type];
      events.forEach(function(v) {
        v && v();
      });
    },
    // 移除事件
    removeEvents: function(type) {
      if (this.events[type] === undefined) {
        throw new Error(type + 'in events is undefined');
      }
      this.events[type].length = 0;
    }
  };
// 继承事件类
var ceditor = function() {
  Event.call(this);
}

原生DOM节点无法扩展自定义事件的

<html>

<head>
<script type="text/javascript">
function upperCase(x)
{
var y=document.getElementById(x).value
document.getElementById(x).value=y.toUpperCase()
}
</script>
</head>

<body>

Enter your name: <input type="text" id="fname" onchange="upperCase(this.id)">

</body>
</html>

就是一个简单onchange事件,首先确认需要在哪个标签上绑定,其次绑定事件:
eg:绑定在input标签 <input type="text" onchange="functionBox()">
方法:function functionBox(){......}

新手上路,请多包涵

,使用方法如 object.fireEvent('onchange'),即可触发控件的onchange事件。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题