关于引入js文件后里面函数is not defined的问题解决

这个是一个设定,在js里面写入innerHTML即用js写html页面,以便于封装,像这样

 function asd() {
  var div = document.createElement("div");
  div.id = "location";
  div.innerHTML =
    '<div id="left-top-modal">\n' +
    ' <button onclick="change()" id="changeGraphics">按钮</button>\n' +
    '</div>';
  document.body.appendChild(div);
}
function change() {
  console.log("1231231231");
}
 export  {asd}

然后在.vue里面引用

<script>
  import {asd} from "../ad/ad";
    export default {
        name: "Index",
      data () {
        return {}
      },
      mounted(){
          asd();
      }
    }
    </script>

再页面上按钮是会显示出来的,但是里面的点击事件并不会执行,会显示change is not defined

然后经过多方大佬帮助,找到了解决方法

先看解决方法

window.change = function () {
  console.log("1231231231");
}

主要是因为作用域的问题,这个change方法在js里面,onclick事件找方法会在window下面找,当然是找不到的。

然后这样看着是不是很抽象


 function asd() {
  var div = document.createElement("div");
  div.id = "location";
  div.innerHTML =
    '<div id="left-top-modal">\n' +
    ' <button  id="changeGraphics">绘制</button>\n' +
    '</div>';
  document.body.appendChild(div);
    document.getElementById("changeGraphics").addEventListener("click", function(){
      console.log("1231231231");
  })
}
 export  {asd}

这样改一下,用addEventListener事件而不是onclick事件,再把函数体放在asd函数里包着,同样可以完美的解决问题。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值