3 回答

TA貢獻(xiàn)1802條經(jīng)驗 獲得超5個贊
當(dāng)您進(jìn)入 if 語句時,它會退出該函數(shù)。您在呈現(xiàn)頁面時引用輸入字段,因此您沒有這些值。您正在使用字符串作為數(shù)字。
let names = ["Hole-in-one!", "Eagle", "Birdie", "Par", "Bogey", "Double Bogey", "Go Home!"];
function golfScore() {
let strokes = +document.getElementById('strokes').value;
let par = +document.getElementById('par').value;
var val;
if (strokes == 1) {
val = names[0];
} else if (strokes <= par - 2) {
val = names[1];
} else if (strokes == par - 1) {
val = names[2];
} else if (strokes === par) {
val = names[3];
} else if (strokes == par + 1) {
val = names[4];
} else if (strokes == par + 2) {
val = names[5];
} else if (strokes >= par + 3) {
val = names[6];
}
document.getElementById("message").innerHTML = val;
}
<h1>Golf Score</h1>
<form>
<label for="strokes">Strokes: <label><input type="text" id="strokes">
<label for="par">Par: </label><input type="text" id="par">
<button type="button" onclick="golfScore(par, strokes)">How did you do?</button>
</form>
<p id="message"> </p>

TA貢獻(xiàn)1757條經(jīng)驗 獲得超7個贊
您永遠(yuǎn)不會執(zhí)行分配給 , 的語句innerHTML,因為return它退出了函數(shù)。
即使你確實到達(dá)了那里,它也會golfScore()再次調(diào)用,但沒有參數(shù),所以所有if條件都不會成功。
而不是返回,您應(yīng)該分配給一個變量,然后在最后將其分配給 innerHTML。
您傳遞給的參數(shù)golfScore()是輸入元素。它需要獲取它們的值。
// 2 user inputs one for par and one for strokes. depending on 2 values entered re
let strokes = document.getElementById('strokes');
let par = document.getElementById('par');
let names = ["Hole-in-one!", "Eagle", "Birdie", "Par", "Bogey", "Double Bogey", "Go Home!"];
function golfScore(par, strokes) {
par = parseInt(par.value);
strokes = parseInt(strokes.value);
let message = "";
if (strokes == 1) {
message = names[0];
} else if (strokes <= par - 2) {
message = names[1];
} else if (strokes == par - 1) {
message = names[2];
} else if (strokes === par) {
message = names[3];
} else if (strokes == par + 1) {
message = names[4];
} else if (strokes == par + 2) {
message = names[5];
} else if (strokes >= par + 3) {
message = names[6];
}
document.getElementById("message").innerHTML = message;
}
<!DOCTYPE html>
<html>
<head>
<title>Golf Score</title>
</head>
<body>
<h1>Golf Score</h1>
<form>
Strokes: <input type="text" id="strokes"> Par: <input type="text" id="par">
<button type="button" onclick="golfScore(par, strokes)">How did you do?</button>
</form>
<p id="message"> </p>
</body>
</html>

TA貢獻(xiàn)1780條經(jīng)驗 獲得超5個贊
javascript 文件在 HTML 首次呈現(xiàn)時運行,輸入框仍然是空的。
您只引用 javascript 開頭的輸入框,因此 和strokes仍然par為空(因為它們接收空輸入框的值)。
但是,如果您希望每次調(diào)用該函數(shù)時都檢查輸入框值,則將定義移至函數(shù)中
let names = ["Hole-in-one!", "Eagle", "Birdie", "Par", "Bogey", "Double Bogey", "Go Home!"];
function golfScore(par, strokes) {
// Define strokes and par at the beginning of the function
let strokes = parseInt(document.getElementById('strokes').value);
let par = parseInt(document.getElementById('par').value);
let out;
if (strokes == 1) {
out = names[0];
} else if (strokes <= par - 2) {
out = names[1];
} else if (strokes == par - 1) {
out = names[2];
} else if (strokes === par) {
out = names[3];
} else if (strokes == par + 1) {
out = names[4];
} else if (strokes == par + 2) {
out = names[5];
} else if (strokes >= par + 3) {
out = names[6];
}
document.getElementById("message").innerHTML = out;
}
添加回答
舉報