动态加载外部链接JS

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8" content="text/html">
    <title>面试题</title>
</head>
<body>
    <form action="" id="aForm">
        <input type="checkbox" value="a.js">
        <input type="checkbox" value="b.js">
        <input type="checkbox" value="c.js">
        <input type="checkbox" value="d.js">
        <input type="submit" value="提交">
    </form>
    <script type="text/javascript">
        /*
        // 1.提交表单时按勾选的复选框加载外部JS
        // 2.当所有代码加载完成后alert("Done")
        */
        var aForm = document.getElementById("aForm");
        var theInputs = aForm.elements;
        var checkedNum = 0;
        var checkedJsSrc = new Array();
        
        //禁止表单自动提交
        aForm.onsubmit = function(){
            return false;
        }
        
        //给提交按钮添加事件
        for(i = 0; i < theInputs.length; i++){
            if(theInputs[i].type == "submit"){
                theInputs[i].onclick = function(){
                    for(j = 0; j < theInputs.length; j++){
                        if(theInputs[j].type == "checkbox" && theInputs[j].checked){
                            checkedNum++;
                            checkedJsSrc.unshift(theInputs[j].value);
                        }
                    }
                    loadJs(checkedNum);
                }
            }
        }        
        
        //输出Done
        function sayDone(){
            alert("Done");
            aForm.submit();
        }
        
        //加载外部JS
        function loadJs(aNum){
            var domScript = document.createElement("script");
            var loadJsNum = aNum;
            domScript.type = "text/javascript";


            if(loadJsNum <= 1){
                domScript.onloadDone = false;
                domScript.src = checkedJsSrc[0];
                domScript.onload = function (){
                    domScript.onloadDone = true;
                    sayDone();
                }
                domScript.onreadystatechange = function(){
                    if(("loaded" === domScript.readyState || "complete" === domScript.readyState) && !domScript.onloadDone){
                        domScript.onloadDone = true;
                        sayDone();
                    }
                }
            }
            else
            {
                domScript.onloadDone = false;
                domScript.src = checkedJsSrc[loadJsNum - 1];
                domScript.onload = function (){
                    domScript.onloadDone = true;
                    loadJs(loadJsNum - 1);
                }
                domScript.onreadystatechange = function(){
                    if(("loaded" === domScript.readyState || "complete" === domScript.readyState) && !domScript.onloadDone){
                        domScript.onloadDone = true;
                        loadJs(loadJsNum - 1);
                    }
                }
            }
            document.getElementsByTagName("head")[0].appendChild(domScript);
        }
    </script>
</body>
</html>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘元涛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值