聪明的程序员Javascript教程"日积月累"挑战



对于本视频中的年龄挑战,我收到以下错误:

Uncaught TypeError: Cannot read properties of null (reading 'appendChild') at yearBorn (script.js:10:47) at        HTMLButtonElement.onclick (challenge.html:19:64) yearBorn @ script.js:10 onclick @ challenge.html:19

JS:

函数年份Born(({

var birthYear = prompt('What year were you born?');
var ageInDays = (2022 - birthYear) * 365;
var h1 = document.createElement('h1');    
var textAnswer = document.createTextNode('You are ' + ageInDays + ' days old');
h1.setAttribute('id', 'yearBorn');
h1.appendChild(textAnswer);
document.getElementById('flex-box-result').appendChild(h1);

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="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
/>
<title>Javascript Challenge</title>
<link rel="stylesheet" href="static/css/index.css"
</head>
<body>
<div class="container-1">
<h2>Challenge 1: Your Age in Days</h2>
<div class="flex-box-container-1">
<div>
<button class="btn btn-primary" onclick="yearBorn()">Click Me</button>
</div>
<div>
<button class="btn btn-danger">Reset</button>
</div>
</div>
<div class="flex-box-container-1">
<div class="flex-box-result"></div>
</div>
</div>
<script src="static/js/script.js"></script>
</body>
</html>

为什么我会出错?

我希望在文档中的按钮下方的弹性框容器中打印年龄(以天为单位(。相反,得到错误

解决方案1这一行中的错误

document.getElementById('flex-box-result').appendChild(h1)

因为document.getElementById((需要一个id,您在创建像这样的html元素时可以提供这个id

<div id="id"></div>

您的灵活框结果是一个类

<div class="flex-box-result"></div>

<div class="flex-box-result"></div>

解决方案2在JavaScript代码中,您还可以将querySelector方法与元素的选择器(如CSS选择器(一起使用

document.querySelector('.flex-box-result').appendChild(h1)

最新更新