一个用户aaa 2024-05-10 20:24 采纳率: 50%
浏览 3
已结题

html无法识别JavaScript中的函数

无法识别js文件内的函数
calculateGPA.html如下

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="utf-8">
    <title>Web page/Contact</title>
    <link rel="stylesheet" href="common.css">
    <link rel="icon" href="pictures/favicon.ico" type="image/x-icon">
    <script type="text/javascript" src="generalFunction.js">
    </script>
    <script>
        window.onload=function(){
        var submit=document.getElementById("submit");
        submit.onclick=function(){
            event.preventDefault();
            request("gpa.js");
            console.log("gpa.js has onloaded.");
        }
        be_gray();
    }
    </script>
</head>

<body>
    <div id="wrapper">

    <header>
        <h1>Beijing Jiaotong University</h1>
    </header>

    <nav>
        <ul style="margin: 0;" id="navigation">
            <li><a href="home.html">Home</a>
            </li>
            <li><a href="Services.html" target="_blank">Services</a>
                <ul>
                    <li><a href="CalculateGPA.html">calculate</a></li>
                </ul>
            </li>
            <li><a href="Contact.html" target="_blank">Contact</a>
            </li>

        </ul>
     </nav>

    <main>
        <br>
        <div id="formContainer"></div>
        <div id="calculate"></div>
        <form id="myForm">
          <label for="number">the number of curriculums you want to calculate:</label>
          <input type="number" name="number" id="number" required>
          <button type="submit" id="submit" value="submit">submit</button>
        </form>
        <div id="result"></div>
    </main>

    <footer>
        <hr>
        <p id="decoration"><a href="http://jigsaw.w3.org/css-validator/check/referer">
            <img style="border:0;width:88px;height:31px"
            src="http://jigsaw.w3.org/css-validator/images/vcss"
                    alt="Valid CSS!" />
                </a>
            <a href="http://jigsaw.w3.org/css-validator/check/referer">
                <img style="border:0;width:88px;height:31px"
                src="http://jigsaw.w3.org/css-validator/images/vcss-blue"
                alt="Valid CSS!" />
                </a>    
        </p>
             <p>Thanks for <a href="http://webdevbasics.net">Basics of Web Design Textbook Companian</a></p>
        <p id="right">Copyright &copy; 2024 LiRuize.All right reserved</p>
          </footer>
    </div>
</body>
</html>

其中request函数在generalFunction.js中,代码如下

/*上传js脚本*/
export function request(url){
    var script=document.createElement("script");
    script.type="text/javascript";
    if(script.readyState){
        script.onreadyStatechange=function(){
            if(script.readyState=="complete"||script.readyState=="loaded"){
                script.onreadyStatechange=null;
            }
        };
        console.log("IE");
    }else{
        script.onload=function(){
        };
    }
    script.src=url;
    document.getElementsByTagName("head")[0].appendChild(script);
}
console.log("generalFunction.js has onloaded.");

gpa.js如下

console.log("generate table has been submit.");
var number = parseInt(document.getElementById("number").value);
for (var i = 0; i < number; i++) {
    var fieldset = document.createElement("fieldset");
    var legend = document.createElement("legend");
    legend.appendChild(document.createTextNode(i+1+" curriculum"));
    fieldset.appendChild(legend);
    
    var label1 = document.createElement("label");
    label1.htmlFor = "score" + i;
    label1.appendChild(document.createTextNode("Score:"));
    fieldset.appendChild(label1);
    
    var input1 = document.createElement("input");
    input1.type = "number";
    input1.id = "score" + i;
    input1.className = "score";
    input1.required = true;
    input1.min = 0;
    input1.max = 100;
    fieldset.appendChild(input1);

    var label2 = document.createElement("label");
    label2.htmlFor = "credit" + i;
    label2.appendChild(document.createTextNode("Credit:"));
    fieldset.appendChild(label2);
    
    var input2 = document.createElement("input");
    input2.type = "number";
    input2.id = "credit" + i;
    input2.className = "credit";
    input2.required = true;
    input2.min = 0;
    input2.max = 20;
    fieldset.appendChild(input2);
    document.getElementById("formContainer").appendChild(fieldset);
}
console.log("table has been generated.");

be_gray();
var gpaForm=document.getElementById("myForm");
empty(gpaForm);

var calculateBtn=document.createElement("input");
var startCal=document.getElementById("calculate");
calculateBtn.type="button";
calculateBtn.value="CalculateGPA";
startCal.appendChild(calculateBtn);

calculateBtn.onclick=function(){
    var scoreAll=new Array(number);
    var valueAll=new Array(number);
    var every=new Array(number);
    var res=0;
    var values=0;
    for(var i=0;i<number;i++){
        scoreAll[i]= parseInt(document.getElementById("score"+i).value);
        valueAll[i]=parseInt(document.getElementById("credit"+i).value);
        values+=valueAll[i];
    }
    for(var i=0;i<number;i++){
        every[i]=scoreAll[i]*(valueAll[i]/values);
        res+=every[i];
    }
    res/=25;
    document.getElementById("result").appendChild(document.createTextNode("Your GPA is "+res.toFixed(2)));
}


  • 写回答

2条回答 默认 最新

  • 笑面虎 2024-05-10 20:24
    关注

    以下内容由CHATGPT及笑面虎共同生成、有用望采纳:


    您想要解决的问题: 您提问的目的是解决在HTML文件中无法识别JavaScript文件中定义的函数的问题。

    问题出现原因:

    1. 您在HTML文件中通过<script>标签引入了generalFunction.js,但使用了export关键字,这是ES6模块的语法,而您的<script>标签并没有设置模块类型,因此无法识别export
    2. 您的request函数在generalFunction.js中被定义为模块的一部分,但是您尝试在没有正确模块加载机制的情况下使用它。
    3. 您的gpa.js文件中定义了be_grayempty函数,但是没有提供这些函数的实现,如果在调用这些函数之前没有正确定义它们,这将导致错误。

    问题解决方案:

    1. 移除export关键字,或者使用模块加载器(如Webpack)来处理模块。
    2. 如果您不使用模块加载器,可以将generalFunction.js中的request函数定义为全局可用的函数,而不是模块的一部分。
    3. 确保be_grayempty函数在gpa.js中被正确定义,并且在调用它们之前已经可用。

    提供代码: 由于您提供的代码片段中没有be_grayempty函数的定义,我将提供一个简化的request函数的示例,并且假设这些函数在其他地方有定义。

    修改后的generalFunction.js:

    function request(url){
        var script = document.createElement("script");
        script.type = "text/javascript";
        script.src = url;
        document.getElementsByTagName("head")[0].appendChild(script);
    }
    

    修改后的calculateGPA.html中的<script>标签:

    <script>
    	window.onload = function(){
    		var submit = document.getElementById("submit");
    		submit.onclick = function(event){
    			event.preventDefault();
    			request("gpa.js");
    			console.log("gpa.js has been requested.");
    			be_gray(); // 确保这个函数在调用前已经定义
    		}
    	}
    </script>
    

    代码运行方式:

    1. 将修改后的generalFunction.jscalculateGPA.html保存在您的Web服务器的相应目录中。
    2. 在Web浏览器中打开calculateGPA.html页面。

    代码预期运行结果: 当用户点击提交按钮时,gpa.js文件将被加载,并且页面将显示生成的表单和计算GPA的按钮。

    推荐相关链接:

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月18日
  • 已采纳回答 5月10日
  • 创建了问题 5月10日

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀