事件的相关用法

    <input type="button" value="按钮" id="btn">
     <script>
 
         var btn=document.getElementById("btn");
        //无法给同一个对象的同一个事件注册多个事件处理函数
         btn.onclick=function(){
             alert("hello");
             //移除事件
             btn.onclick=null;
           } 
        //addEventListener兼容性问题
        function btnclick() {
        alert('hello world');
        //移除事件
        btn.removeEventListener('click',btnclick);
        }
        btn.addEventListener('click',btnclick);
         btn.addEventListener('click',function(){
           alert('hello China');        
    
     </script>

 <body>
    <div id="box1">
        <div id="box2">
            <div id="box3"></div>
        </div>
    </div>
    <script>
        //addEventListener的第三个参数为false的时候,事件冒泡,
        //为true的时候:事件捕获;
    var box1=document.getElementById('box1');
    var box2=document.getElementById('box2');
    var box3=document.getElementById('box3');
    var array=[box1,box2,box3];
    for(var i=0;i<array.length;i++){
        array[i].addEventListener('click',function(){
            console.log(this.id)
        })
    }
    //事件的三个阶段 事件捕获 执行当前点击的元素  冒泡阶段
 
    </script>
 </body>
 <body>
     <ul id="ul">
         <li>1</li>
         <li>2</li>
         <li>3</li>
         <li>4</li>
         <li>5</li>
         <li>6</li>
     </ul>
     <script>
         //事件委托
      var ul=document.getElementById('ul');
      ul.onclick=function(e){
             //e 事件参数(事件对象):当事件发生的时   候,可以获取一些和事件相关的数据
             //获取到当前点击li
             //e.target
             e.target.style.backgroundColor='red';
      }
     </script>
 </body>
  e.target 获取真正出发事件的对象
  e.currentTarget 和this一样 获取事件处理函数所属的对象
  e.eventPhase 获取事件的阶段
  e.clientX   可视区域
  c.clientY
  e.pageX   页面位置
  e.pageY 
   //标准的DOM方法 取消冒泡
     e.stopPropagation();
 
     //取消默认行为执行
      return false;
     // dom 标准方法
      e.preventDefault();
 
   setTimeout的用法
  var  timeid;
  var btn1=document.getElementById('btn');
  btn1.onclick=function(){
  timeid=setTimeout(function(){console.log('baozhaole ');},3000);}
  var btn2=document.getElementById('btn2');
  btn2.onclick=function(){
  clearTimeout(timeid);}
   -
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在DApp中,事件用于实现智能合约与前端界面的实时通信,当智能合约中的某个状态发生变化时,可以通过事件将状态变化的信息通知给前端界面,以便前端及时更新显示。 以下是一个简单的示例代码,展示如何在Solidity智能合约中定义事件,并在Web3.js中监听事件: ``` // Solidity代码 contract MyContract { event StateChanged(uint newState); uint public state; function changeState(uint newState) public { state = newState; emit StateChanged(newState); } } ``` 在上面的代码中,我们定义了一个名为StateChanged的事件,并在changeState函数中调用了emit关键字触发该事件,并将新的状态值作为参数传递给事件。 在前端界面中,我们可以使用Web3.js库来监听事件: ``` // JavaScript代码 var myContract = new web3.eth.Contract(abi, address); myContract.events.StateChanged() .on('data', function(event) { console.log('New state:', event.returnValues.newState); }) .on('error', console.error); ``` 在上面的代码中,我们创建了一个名为myContract的Contract对象,并使用events属性来订阅StateChanged事件。在事件触发时,我们通过回调函数来获取事件返回的数据,并在控制台中输出新的状态值。 需要注意的是,为了使用事件,我们需要在Solidity智能合约中定义事件,并在Web3.js中订阅事件。同时,需要在前端界面中运行Web3.js,并连接到以太坊网络节点。 希望这些信息可以帮助到您。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值