问题描述
const displayMessage = function (message) {
document.querySelector('.message').textContent = message;
};
const displayOtherMessage = function (message) {
document.querySelector('.otherMessage').textContent = message;
};
document.querySelector('.metric').addEventListener('click',function () {
document.querySelector('.enterheight').textContent =
'Enter your height in metres.';
const height = Number(document.querySelector('.height').value);
console.log(height,typeof height);
const weight = Number(document.querySelector('.weight').value);
console.log(weight,typeof weight);
if (!height && !weight) {
document.querySelector('.message').textContent =
'No height or weight entered.';
} else if (height && weight) {
const bmi = weight / height ** 2;
document.querySelector('.message').textContent = `Your BMI is ${bmi}`;
if (bmi < 18.5) {
displayOtherMessage('You are underweight.');
} else if (bmi >= 18.5 && bmi < 25) {
displayOtherMessage('You are a healthy weight.');
} else if (bmi >= 25 && bmi < 30) {
displayOtherMessage('You are overweight.');
} else if (bmi >= 30 && bmi < 35) {
displayOtherMessage('You are obese.');
} else if (bmi > 35) {
displayOtherMessage('You are morbidly obese.');
} else {
displayOtherMessage('');
}
}
});
<!DOCTYPE html>
<html lang="en">
<head>
<Meta charset="UTF-8" />
<Meta http-equiv="X-UA-Compatible" content="IE=edge" />
<Meta name="viewport" content="width=device-width,initial-scale=1.0" />
<link rel="stylesheet" href="style.css" />
<link
rel="stylesheet"
href="https://fonts.googleapis.com/css?family=Amatic+SC"
/>
</head>
<body>
<main>
<h2>BMI Calculator</h2>
<h3>Would you like to use metric or imperial values?</h3>
<div>
<button id="metric" class="metric">Metric</button>
<button id="imperial" class="imperial">Imperial</button>
</div>
<p id="enterheight"></p>
<input type="number" class="height" />
<p id="enterweight"></p>
<input type="number" class="weight" />
<p class="message"></p>
<p class="otherMessage"></p>
</main>
<script src="script.js"></script>
</body>
</html>
我正在用 JavaScript 构建 BMI 计算器,它最终将能够采用公制和英制值。单击“公制”按钮时,我希望文本“以米为单位输入您的高度”出现在高度输入字段上方。这是 JavaScript:
基本上,我的问题是:
document.querySelector('.enterheight').textContent =
'Enter your height in metres.';
目前,当点击度量按钮时,没有任何反应。控制台说 document.querySelector(...) 为空,我不明白为什么。是因为 HTML 是一个空字符串,还是我在这里遗漏了什么?
解决方法
想想看,HTML 中不存在 DOM 元素。这就是JS无法访问的原因。你需要创建一个像
这样的元素<p class="enterHeight"></p>
在 HTML 文件中,然后您可以访问它..
希望对你有用...