ES6规范中 html调用模块内函数无法调用

项目场景:

项目场景:弹出html代码的模态框点击确定后,需要调用模块内的重新加载函数


问题描述

原本需要调用模块内的代码,通过模块正常导出
问题代码:

主代码html

	<script src="static/jquery-2.1.1.min.js"></script>
    <script src="static/layer/layer.js"></script>
    <script type="module" src="./main.js"></script>
    <script>
    function stageSelect(){
            console.log("选择关卡");
            let input = "<input id='stageNum' placeholder='输入数字'><//input>"
            layer.alert(input, {icon: 3, title: "请选择关卡"}, function (index){
                console.log("回调");
                stageChange($("#stageNum").val());
                layer.close(index);
            });
        }
    </script>

模块代码

	export function stageChange(stageNum){
		console.log(stageNum);
	}

最终回调失败


原因分析:

模块代码只会在加载的时候调用一次,export的方法也不是全局方法,导致html页面获取不到,而且html页面也没有import导入功能


解决方案:

在html代码中设置一个button
并在模块中绑定它的监听器

	<button hidden id="stageChange"></button>
	<script src="static/jquery-2.1.1.min.js"></script>
    <script src="static/layer/layer.js"></script>
    <script type="module" src="./main.js"></script>
    <script>
    function stageSelect(){
            console.log("选择关卡");
            let input = "<input id='stageNum' placeholder='输入数字'><//input>"
            layer.alert(input, {icon: 3, title: "请选择关卡"}, function (index){
                console.log("回调");
                $("#stageChange").click();
                layer.close(index);
            });
        }
    </script>

main.js

document.querySelector("#stageChange").addEventListener("click", (event) => {

    level = document.querySelector("#stageNum").value;
    console.log(level);
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值