document.write插入的js文件,为什么里面的方法都用不了

 var list = ['language.js','formCommon.js','approve.js'];
 for(var i=0;i<list.length;i++){
     document.write('<script type="text/javascript" src="script/'+list[i] + '?v=' + ver +'">' + '</sc' + 'ript>');
 }
 
 //getData方法来自approve.js,为什么拿不到
 const params = getData()
阅读 2.9k
3 个回答

js代码是即时执行的,dom渲染相比js执行还是慢很多,简而言之就是你的js还没插入到页面上就去调用了getData,可以试下延迟一秒后再去调用,就可以验证了

var list = ['language.js','formCommon.js','approve.js'];
for(var i=0;i<list.length;i++){
 document.write('<script type="text/javascript" src="script/'+list[i] + '?v=' + ver +'">' + '</sc' + 'ript>');
}

setTimeout(() => {
  const params = getData()
}, 1000);

先后问题,你应该是在动态引入js包前,调用了里面的方法,导致undefined

  1. 是否考虑了脚本加载是异步的问题?如何确保脚本已经加载并执行,看步骤二。
  2. 用document.write?什么鬼?创建scripte标签,插入到dom中,监听onload事件,再搞个定时器执行callback或者resolve,这套流程不好吗?
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题