[英]cannot link javascript to html file?
所以我有我正在嘗試做的實驗室,我的教授希望它在兩個單獨的文件中完成。 不幸的是,她是我遇到過的最差的 CS 老師之一,所以我幾乎必須自學一切。 通過將我的所有 js 代碼放在腳本標簽中,我能夠讓我的代碼在一個 html 文件中工作。 我很確定我正確鏈接了文件,但我又不確定。 我的 html 和 js 文件也位於同一目錄中。 這是我的代碼:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="author" content="David Smith">
<meta name="discription" content="lab7">
<meta name="keywords" content="lab7">
<title>Lab7</title>
<link type="text/css" rel="stylesheet" href="lab7.css" />
<script type="text/javascript" src="lab7.js"></script> <!-- I tried linking here -->
</head>
<body>
<script type="text/javascript" src="lab7.js"></script> <!-- and tried linking here -->
<div>
<span id="firstNum"></span>
<span id="op"></span>
<span id="secondNum"></span>
<span>=</span>
<span><input class="textbox" id="textbox" type="text"></span>
<span><input id="button" type="submit" name="button" value="enter" onclick="button();" /></span>
<span id="timer"></span>
</div>
<div>
<span>Number correct: </span>
<span id="numCorrect">0</span>
</div>
<div>
<span><input id="button2" type="submit" name="button" value="try again!" onclick="button2();" /></span>
</div>
</body>
</html>
.js 文件:
var ops = ['+', '-', '*'];
var timeLeft = 30;
var timer = document.getElementById('timer');
var firstNum = document.getElementById('firstNum');
var secondNum = document.getElementById('secondNum');
var op = document.getElementById('op');
var randomOp = ops[Math.floor(Math.random() * 3)];
var randomFirstNum = Math.floor(Math.random() * 10 + 1);
var randomSecondNum = Math.floor(Math.random() * 10 + 1);
firstNum.innerHTML = randomFirstNum;
op.innerHTML = randomOp;
secondNum.innerHTML = randomSecondNum;
var timerId = setInterval(countdown, 1000);
var currentCorrectAnswers = 0;
document.getElementById('button').addEventListener("click",
function () {
var answer = document.getElementById("textbox").value;
var numCorrect = document.getElementById("numCorrect");
if (randomOp == '+') {
if (randomFirstNum + randomSecondNum == answer) {
document.getElementById("textbox").style.backgroundColor = "white";
currentCorrectAnswers += 1;
randomOp = ops[Math.floor(Math.random() * 3)];
randomFirstNum = Math.floor(Math.random() * 10 + 1);
randomSecondNum = Math.floor(Math.random() * 10 + 1);
firstNum.innerHTML = randomFirstNum;
op.innerHTML = randomOp;
secondNum.innerHTML = randomSecondNum;
} else {
document.getElementById("textbox").style.backgroundColor = "red";
}
} else if (randomOp == '-') {
if (randomFirstNum - randomSecondNum == answer) {
document.getElementById("textbox").style.backgroundColor = "white";
currentCorrectAnswers += 1;
randomOp = ops[Math.floor(Math.random() * 3)];
randomFirstNum = Math.floor(Math.random() * 10 + 1);
randomSecondNum = Math.floor(Math.random() * 10 + 1);
firstNum.innerHTML = randomFirstNum;
op.innerHTML = randomOp;
secondNum.innerHTML = randomSecondNum;
} else {
document.getElementById("textbox").style.backgroundColor = "red";
}
} else {
if (randomFirstNum * randomSecondNum == answer) {
document.getElementById("textbox").style.backgroundColor = "white";
currentCorrectAnswers += 1;
randomOp = ops[Math.floor(Math.random() * 3)];
randomFirstNum = Math.floor(Math.random() * 10 + 1);
randomSecondNum = Math.floor(Math.random() * 10 + 1);
firstNum.innerHTML = randomFirstNum;
op.innerHTML = randomOp;
secondNum.innerHTML = randomSecondNum;
} else {
document.getElementById("textbox").style.backgroundColor = "red";
}
}
numCorrect.innerHTML = currentCorrectAnswers;
});
document.getElementById('button2').addEventListener("click",
function () {
window.location.reload(true);
});
function countdown() {
if (timeLeft == -1) {
//timeLeft = 30;
clearTimeout(timerId);
alert("you answered " + currentCorrectAnswers + " questions correctly!");
} else {
timer.innerHTML = 'time left: ' + timeLeft + ' seconds';
timeLeft--;
}
}
有人可以讓我知道我做錯了什么嗎? 謝謝!
您的<script>
標記位於它所引用的 HTML 標記之上。 這意味着您的 javascript 正在嘗試使用尚不存在的 HTML 標記,因為所有 HTML 和 JS 代碼都是從上到下加載的。 如果您將<script>
標簽移動到<body>
標簽的底部,您的代碼將運行良好:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="author" content="David Smith">
<meta name="discription" content="lab7">
<meta name="keywords" content="lab7">
<title>Lab7</title>
<link type="text/css" rel="stylesheet" href="lab7.css" />
</head>
<body>
<div>
<span id="firstNum"></span>
<span id="op"></span>
<span id="secondNum"></span>
<span>=</span>
<span><input class="textbox" id="textbox" type="text"></span>
<span><input id="button" type="submit" name="button" value="enter" onclick="button();" /></span>
<span id="timer"></span>
</div>
<div>
<span>Number correct: </span>
<span id="numCorrect">0</span>
</div>
<div>
<span><input id="button2" type="submit" name="button" value="try again!" onclick="button2();" /></span>
</div>
<script type="text/javascript" src="lab7.js"></script> <!-- I tried linking here -->
</body>
</html>
您可以在此處找到有關此行為的更多信息。
只需將 your.js 文件放在<body>
標記的末尾即可。 錯誤是,您的 js 代碼試圖訪問尚未呈現的 html 元素。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="author" content="David Smith">
<meta name="discription" content="lab7">
<meta name="keywords" content="lab7">
<title>Lab7</title>
<link type="text/css" rel="stylesheet" href="lab7.css"/>
</head>
<body>
<div>
<span id="firstNum"></span>
<span id="op"></span>
<span id="secondNum"></span>
<span>=</span>
<span><input class="textbox"id="textbox"type="text"></span>
<span><input id="button" type="submit" name="button" value="enter" onclick="button();"/></span>
<span id="timer"></span>
</div>
<div>
<span>Number correct: </span>
<span id="numCorrect">0</span>
</div>
<div>
<span><input id="button2" type="submit" name="button" value="try again!" onclick="button2();"/></span>
</div>
<script type="text/javascript" src="lab7.js"></script> <!-- and tried linking here -->
</body>
</html>
它現在工作。 嘗試將其放置在正文之后或在 javascript 文件中添加負載 function,就像有一個文檔一樣。准備好 function 用於 ZA5A565B1076EC39A8 的 function
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="author" content="David Smith">
<meta name="discription" content="lab7">
<meta name="keywords" content="lab7">
<title>Lab7</title>
<link type="text/css" rel="stylesheet" href="lab7.css"/>
</head>
<body>
<div>
<span id="firstNum"></span>
<span id="op"></span>
<span id="secondNum"></span>
<span>=</span>
<span><input class="textbox"id="textbox"type="text"></span>
<span><input id="button" type="submit" name="button" value="enter" onclick="button();"/></span>
<span id="timer"></span>
</div>
<div>
<span>Number correct: </span>
<span id="numCorrect">0</span>
</div>
<div>
<span><input id="button2" type="submit" name="button" value="try again!" onclick="button2();"/></span>
</div>
</body>
<script type="text/javascript" src="lab7.js"></script> <!-- Try linking here -->
</html>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.