ChatGPT-3.5 代码调试
使用 ChatGPT-3.5 调试代码
使用 ChatGPT-3.5 编写代码就像让一位经验丰富的程序员检查你的代码一样。
发现自己代码中的错误可能很困难,而发现别人编写的代码中的错误则更加困难。
ChatGPT 可以为您节省大量调试代码的时间。
缩小问题范围
在使用生成式人工智能来帮助您之前,请先看看您是否可以缩小问题范围并收集更多信息。
弄清楚(如果可以的话):
- 代码的哪一部分导致了错误?
- 有任何错误信息吗?
- 发生了什么?又应该发生什么?
ChatGPT 可以通过更多信息更准确地发现问题。
问题代码
上一章,我们让 ChatGPT 为我们编写了一些网页代码。现在我们为页面添加了新设计,代码不再起作用:
例子
<!DOCTYPE html>
<html>
<head>
<title>W3.CSS模板</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Raleway">
<style>
body,h1 {font-family:“Raleway”,sans-serif}
主体,html {高度:100%}
.bgimg {
背景图像:url('/w3images/forestbridge.jpg');
最小高度:100%;
背景位置:中心;
背景尺寸:封面;
}
</style>
</head>
<body>
<div class="bgimg w3-display-container w3-animate-opacity w3-text-white">
<div class="w3-display-middle">
<h1 class="w3-jumbo w3-animate-top">周末</h1>
<hr class="w3-border-grey" style="margin:auto;width:40%">
<p class="w3-large w3-center">还剩 35 天</p>
</div>
<div class="w3-display-bottomleft w3-padding-large">
由<a href="https://www.w3schools.com/w3css/default.asp" target="_blank">w3.css</a>提供支持
</div>
</div>
亲自尝试 »
我们知道我们更改了代码的哪一部分,如果我们按 F12(或进入浏览器的开发者模式),我们可以在“控制台”中看到错误:
未捕获的类型错误:无法设置 null 属性(设置‘innerHTML’)
倒计时@未知
window.onload @未知
有了这些信息,我们就可以要求 ChatGPT 进行调试。
例子
出现以下提示:
以下页面的倒计时功能不再起作用。
<!DOCTYPE html>
<html>
<head>
<title>W3.CSS模板</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Raleway">
<style>
body,h1 {font-family:“Raleway”,sans-serif}
主体,html {高度:100%}
.bgimg {
背景图像:url('/w3images/forestbridge.jpg');
最小高度:100%;
背景位置:中心;
背景尺寸:封面;
}
</style>
</head>
<body>
<div class="bgimg w3-display-container w3-animate-opacity w3-text-white">
<div class="w3-display-middle">
<h1 class="w3-jumbo w3-animate-top">周末</h1>
<hr class="w3-border-grey" style="margin:auto;width:40%">
<p class="w3-large w3-center">还剩 35 天</p>
</div>
<div class="w3-display-bottomleft w3-padding-large">
由<a href="https://www.w3schools.com/w3css/default.asp" target="_blank">w3.css</a>提供支持
</div>
</div>
<script>
// 计算倒计时的函数
函数倒计时(){
// 获取当前日期
var currentDate = new Date();
// 检查是否是星期六
如果 (currentDate.getDay() === 6) {
var countdownElement = document.getElementById("周末倒计时");
countdownElement.innerHTML = "周末已经到来";
return; // 如果是星期六,则提前退出该函数
}
// 查找下一个星期六
var daysToSaturday = (6 - currentDate.getDay() + 7) % 7; // 距离下一个星期六还有多少天
var nextSaturday = new Date(currentDate.getFullYear(),currentDate.getMonth(),currentDate.getDate() + daysToSaturday);
// 计算剩余时间
var timeRemaining = nextSaturday.getTime() - currentDate.getTime();
var daysRemaining = Math.floor(timeRemaining / (1000 * 60 * 60 * 24));
var hoursRemaining = Math.floor((timeRemaining % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
// 在网页上显示倒计时
var countdownElement = document.getElementById("周末倒计时");
countdownElement.innerHTML = daysRemaining + " 天和 " + hoursRemaining + " 小时";
}
// 页面加载时调用倒计时函数
窗口.onload = 函数(){
倒数();
};
</script>
</body>
</html>
我收到以下错误:
未捕获的类型错误:无法设置 null 属性(设置‘innerHTML’)
倒计时@未知
window.onload @未知
ChatGPT-3.5 的响应可能是:
您遇到的错误表明代码正在尝试设置无法找到的元素的 innerHTML 属性。具体来说,它无法在 HTML 代码中找到 id 为“weekend_countdown”的元素。要解决此问题,您需要确保代码中有一个 id 为“weekend_countdown”的 HTML 元素。
查看提供的代码,似乎缺少 id 为“weekend_countdown”的元素。要解决此问题,您可以在要显示倒计时的位置添加一个具有该 id 的元素。例如,您可以按如下方式修改 HTML 代码:
通过将 `id="weekend_countdown"` 属性添加到 `<p> ` 元素,您提供一个 JavaScript 代码可以定位的元素,并相应地修改其 innerHTML 属性。这应该可以解决错误并使倒计时功能正常工作。
审查代码
从 ChatGPT 的回应来看,它似乎很可能会起作用。
我们不小心删除了应该显示文本的元素。将正确的 ID 添加到新元素应该可以正常工作。
测试
将修复程序添加到代码中并进行测试:
例子
<div class="w3-display-middle">
<h1 class="w3-jumbo w3-animate-top">周末</h1>
<hr class="w3-border-grey" style="margin:auto;width:40%">
<p class="w3-large w3-center" id="weekend_countdown">还剩 35 天</p>
</div>
亲自尝试 »
有效!问题只能出在你那“歪”手上!