解决innerHTML时JS不生效

写了一个简单的函数..作用是解决innerHTML时JS不生效..基于网上某个类修改...

兼容ie6+..Firefox..其它未测!

function set_innerHTML(el, htmlCode) {  
     var ua = navigator.userAgent.toLowerCase();  
      if (ua.indexOf('msie') >= 0 && ua.indexOf('opera') < 0) {  
          htmlCode = '<div style="display:none">for IE</div>' + htmlCode;  
          htmlCode = htmlCode.replace(/<script([^>]*)>/gi,'<script$1 defer>');  
          el.innerHTML = htmlCode;  
          el.removeChild(el.firstChild);  
      } else {
          var html = htmlCode.replace( /<script[^>]*>([\s\S]*?)<\/script>/mgi, "" );
          var code = htmlCode.replace( /[\s\S]*?<script[^>]*>([\s\S]*?)<\/script>[\s\S]*?/mgi, "$1" );
		  //.和[\s\S] 不一样
          el.innerHTML = html;
		  var wc = T$('wc1217');
		  if(wc)
		  	wc.parentNode.removeChild(wc);
		  script = document.createElement("script");
		  script.defer = true;
          script.type = "text/javascript";
		  script.id = "wc1217";
		  script.text = code;
		  setTimeout(function(){document.getElementsByTagName('body').item(0).appendChild( script )},1000);
     }  
} 
//T$就是document.getElementByid


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您好!对于使用layui重新渲染的innerHTML点击事件不生效的问题,可能有几个原因。以下是一些可能的解决方法: 1. 检查layui模块是否正确加载:确保您已正确加载layui模块,并且没有任何错误或警告。您可以检查浏览器的开发者工具控制台来查看是否有任何相关的错误信息。 2. 使用layui的事件绑定方法:layui提供了一些特定的事件绑定方法,例如form.on、table.on等等。如果您使用了layui的组件,尝试使用它们来绑定事件,而不是直接使用innerHTML绑定。 3. 使用事件代理:如果您动态添加了一些元素,并希望为它们绑定点击事件,可以考虑使用事件代理。您可以将点击事件绑定在一个父元素上,然后通过事件冒泡捕获子元素的点击事件。 以下是一个使用事件代理的示例代码: ```javascript // 绑定点击事件到父元素 layui.$('#parentElement').on('click', '.childElement', function () { // 处理点击事件 }); // 动态添加子元素 layui.$('#parentElement').append('<button class="childElement">点击我</button>'); ``` 4. 检查其他代码逻辑:请确保您的代码逻辑正确,并没有其他相关问题导致点击事件不生效。比如,可能有其他代码阻止了点击事件的冒泡或默认行为。 希望这些解决方法能帮到您!如果问题仍然存在,请提供更多的代码和详细信息,以便我更好地帮助您解决问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值