原生js的事件绑定

第一种

  <button id="btn1">按钮1</button>
  <script>
    const btn1 = document.getElementById('btn1')
    btn1.addEventListener('click', () => {
      alert('按钮1被点击了')
    })
  </script>

第二种

  <button id="btn2">按钮2</button>
  <script>
    const btn2 = document.getElementById('btn2')
    btn2.onclick = () => {
      alert('按钮2被点击了')
    }
  </script>

第三种

  <button onclick="demo()">按钮3</button>
  <script>
    function demo() {
      alert('按钮3被点击了')
    }
  </script>

欢迎留言补充!!!

JavaScript 中,原生事件绑定方法主要通过 DOM 操作实现。以下是几种常见的绑定方式: ### 1. 属性赋值方式绑定事件 这种方式是将事件直接赋值给元素的事件属性,例如 `onclick`、`onmouseover` 等。如果多次赋值,后赋值的函数会覆盖之前的函数,因此只能触发最后一次赋值的函数。 ```javascript document.getElementById("btn2").onclick = show; document.getElementById("btn2").onclick = print; // 只会触发 print 函数 ``` ### 2. 使用 `addEventListener` 方法绑定事件 这是推荐的方式,可以通过 `addEventListener` 添加多个事件监听器,它们会按照添加顺序依次执行。这种方式不会覆盖之前的事件监听器。 ```javascript var cm2 = document.getElementById("me2"); cm2.addEventListener("click", function() { console.log("first"); }); cm2.addEventListener("click", function() { console.log("second"); }); cm2.addEventListener("click", function() { console.log("3rd"); }); ``` ### 3. 混合使用 React 事件与原生事件的问题 在 React 中,虽然可以通过 `componentDidMount` 生命周期钩子使用原生 `addEventListener` 绑定事件,但需要注意 React 的合成事件和原生事件之间可能会产生冲突。例如,如果同时使用 React 的 `onClick` 和原生 `addEventListener`,两个事件都会被触发,但需要注意避免重复绑定和内存泄漏问题。 ```javascript class MyComponent extends React.Component { handleClick() { alert('React Clicked'); } componentDidMount() { const button = document.getElementById('myButton'); button.addEventListener('click', function() { alert('Native Clicked'); }); } render() { return ( <div> <button onClick={this.handleClick}>Click Me</button> <button id="myButton">Click Me Too</button> </div> ); } } ``` ### 4. Vue 中绑定原生事件 在 Vue 中,可以通过生命周期钩子(如 `onMounted`)绑定原生事件。例如,在 `onMounted` 钩子中,将方法绑定到全局 `window` 对象,然后通过 `addEventListener` 监听事件。 ```javascript onMounted(() => { window.getImageURL = getImageURL; }); const getImageURL = (url) => { console.log("url", url); }; ``` ### 5. DOM 操作获取元素并绑定事件 JavaScript 提供了多种 DOM 操作方法来获取元素并绑定事件。例如,可以使用 `getElementById`、`querySelector` 等方法获取元素,然后通过 `addEventListener` 或直接赋值事件属性来绑定事件。 ```javascript const element = document.getElementById("myButton"); element.addEventListener("click", function() { console.log("Button clicked"); }); ``` --- ### 相关问题 1. 如何在 JavaScript 中移除事件监听器? 2. React 和 Vue 在事件绑定方面有哪些差异? 3. 为什么使用 `addEventListener` 比直接赋值事件属性更推荐? 4. 如何在 Vue 中避免原生事件与框架事件冲突? 5. 在 React 中如何正确地使用原生事件绑定
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值