除了 querySelector 和 getElementId 之外,还有其他方法可以在 javascript 中获取 HTML 元素吗?
我正在尝试将一个 HTML 元素(一个按钮)添加到我的 javascript 文件中。我尝试过 .querySelector 和 .getElementById ,并且我的脚本文件附加在文件底部,就在 body 元素的结束标记之前。但对于每个变量,我都尝试过对它们使用 .addListener 函数,但收到错误“无法读取 null 的属性(读取“addEventListener”)”
这是我的 HTML 代码:
<body>
<div class="whole">
<!-- Navbar -->
<div class="logo">
<a href="index.html"> <img src="/focus-logo.png" alt="logo" width="100" height="100"></a>
</div>
<!-- timer -->
<figure class="timer">
<div class="minsSec">
<span class="mins">0</span>
<span>:</span>
<span class="secs">00</span>
</div>
<svg class="progress-ring" height="240" width="240">
<circle
class="progress-ring__circle"
stroke-width="10"
fill="transparent"
r="110"
cx="120"
cy="120"
/>
</svg>
</figure>
<div class="timer__btn">
<a href="setTime.html"><button class="set">Set</button></a>
<button id="start">start focus</button>
<button id="reset">reset</button>
<button class="pause">pause</button>
</div>
<script src="setTime.js"></script>
<script src="newTimer.js"></script>
<script src="progressBar.js"></script>
</div>
</body>
and
<body>
<form action=".">
<label for="focusTime">Focus Time</label>
<input type="number" id="focusTimeNum" />
<label for="breakTime">Break Time</label>
<input type="number" id="breakTime" />
<a href="index.html"><button type="submit">Save settings</button></a>
</form>
<script src="setTime.js"></script>
<script src="newTimer.js"></script>
</body>
Newtimer.js
const el = document.querySelector(".timer");
const mindiv = document.querySelector(".mins");
const secdiv = document.querySelector(".secs");
const startBtn = document.querySelector("#start");
localStorage.setItem("btn", "focus");
let initial, totalsecs, perc, paused, mins, seconds;
** startBtn.addEventListener("click", () => { **
let btn = localStorage.getItem("btn");
if (btn === "focus") {
mins = +localStorage.getItem("focusTime") || 1;
} else {
mins = +localStorage.getItem("breakTime") || 1;
}
seconds = mins * 60;
totalsecs = mins * 60;
setTimeout(decremenT(), 60);
startBtn.style.transform = "scale(0)";
paused = false;
});
function decremenT() {
mindiv.textContent = Math.floor(seconds / 60);
secdiv.textConten
t = seconds % 60 > 9 ? seconds % 60 : `0${seconds % 60}`;
if (circle.classList.contains("danger")) {
circle.classList.remove("danger");
}
if (seconds > 0) {
perc = Math.ceil(((totalsecs - seconds) / totalsecs) * 100);
setProgress(perc);
seconds--;
initial = window.setTimeout("decremenT()", 1000);
if (seconds < 10) {
circle.classList.add("danger");
}
} else {
mins = 0;
seconds = 0;
let btn = localStorage.getItem("btn");
if (btn === "focus") {
startBtn.textContent = "start break";
startBtn.classList.add("break");
localStorage.setItem("btn", "break");
} else {
startBtn.classList.remove("break");
startBtn.textContent = "start focus";
localStorage.setItem("btn", "focus");
}
startBtn.style.transform = "scale(1)";
}
}
和 setTimer.js
const focusTimeInput = document.getElementById("focusTimeNum").value;
const breakTimeInput = document.querySelector("#breakTime");
const pauseBtn = document.querySelector(".pause");
focusTimeInput.value = localStorage.getItem("focusTime");
breakTimeInput.value = localStorage.getItem("breakTime");
document.querySelector("form").addEventListener("submit", (e) => {
e.preventDefault();
localStorage.setItem("focusTime", focusTimeInput.value);
localStorage.setItem("breakTime", breakTimeInput.value);
});
document.getElementById("reset").addEventListener("click", () => {
startBtn.style.transform = "scale(1)";
clearTimeout(initial);
setProgress(0);
mindiv.textContent = 0;
secdiv.textContent = 0;
});
pauseBtn.addEventListener("click", () => {
if (paused === undefined) {
return;
}
if (paused) {
paused = false;
initial = setTimeout("decremenT()", 60);
pauseBtn.textContent = "pause";
pauseBtn.classList.remove("resume");
} else {
clearTimeout(initial);
pauseBtn.textContent = "resume";
pauseBtn.classList.add("resume");
paused = true;
}
});
来自 newTimer 的行。 Node.js
startBtn.addEventListener("click", () => {
和 setTimer.js 中的行
document.getElementById("reset").addEventListener("click", () => {
我在后端使用 Node 和 Express
I'm trying to get a HTML element, a button, to my javascript file. I've tried .querySelector and .getElementById and my script file is attached at the bottom of my file just before the closing tag of my body element. but for each of variable I've tried the .addListener function on them but receive the error ' Cannot read properties of null (reading 'addEventListener')'
Here is my HTML Code:
<body>
<div class="whole">
<!-- Navbar -->
<div class="logo">
<a href="index.html"> <img src="/focus-logo.png" alt="logo" width="100" height="100"></a>
</div>
<!-- timer -->
<figure class="timer">
<div class="minsSec">
<span class="mins">0</span>
<span>:</span>
<span class="secs">00</span>
</div>
<svg class="progress-ring" height="240" width="240">
<circle
class="progress-ring__circle"
stroke-width="10"
fill="transparent"
r="110"
cx="120"
cy="120"
/>
</svg>
</figure>
<div class="timer__btn">
<a href="setTime.html"><button class="set">Set</button></a>
<button id="start">start focus</button>
<button id="reset">reset</button>
<button class="pause">pause</button>
</div>
<script src="setTime.js"></script>
<script src="newTimer.js"></script>
<script src="progressBar.js"></script>
</div>
</body>
and
<body>
<form action=".">
<label for="focusTime">Focus Time</label>
<input type="number" id="focusTimeNum" />
<label for="breakTime">Break Time</label>
<input type="number" id="breakTime" />
<a href="index.html"><button type="submit">Save settings</button></a>
</form>
<script src="setTime.js"></script>
<script src="newTimer.js"></script>
</body>
Newtimer.js
const el = document.querySelector(".timer");
const mindiv = document.querySelector(".mins");
const secdiv = document.querySelector(".secs");
const startBtn = document.querySelector("#start");
localStorage.setItem("btn", "focus");
let initial, totalsecs, perc, paused, mins, seconds;
** startBtn.addEventListener("click", () => { **
let btn = localStorage.getItem("btn");
if (btn === "focus") {
mins = +localStorage.getItem("focusTime") || 1;
} else {
mins = +localStorage.getItem("breakTime") || 1;
}
seconds = mins * 60;
totalsecs = mins * 60;
setTimeout(decremenT(), 60);
startBtn.style.transform = "scale(0)";
paused = false;
});
function decremenT() {
mindiv.textContent = Math.floor(seconds / 60);
secdiv.textConten
t = seconds % 60 > 9 ? seconds % 60 : `0${seconds % 60}`;
if (circle.classList.contains("danger")) {
circle.classList.remove("danger");
}
if (seconds > 0) {
perc = Math.ceil(((totalsecs - seconds) / totalsecs) * 100);
setProgress(perc);
seconds--;
initial = window.setTimeout("decremenT()", 1000);
if (seconds < 10) {
circle.classList.add("danger");
}
} else {
mins = 0;
seconds = 0;
let btn = localStorage.getItem("btn");
if (btn === "focus") {
startBtn.textContent = "start break";
startBtn.classList.add("break");
localStorage.setItem("btn", "break");
} else {
startBtn.classList.remove("break");
startBtn.textContent = "start focus";
localStorage.setItem("btn", "focus");
}
startBtn.style.transform = "scale(1)";
}
}
and setTimer.js
const focusTimeInput = document.getElementById("focusTimeNum").value;
const breakTimeInput = document.querySelector("#breakTime");
const pauseBtn = document.querySelector(".pause");
focusTimeInput.value = localStorage.getItem("focusTime");
breakTimeInput.value = localStorage.getItem("breakTime");
document.querySelector("form").addEventListener("submit", (e) => {
e.preventDefault();
localStorage.setItem("focusTime", focusTimeInput.value);
localStorage.setItem("breakTime", breakTimeInput.value);
});
document.getElementById("reset").addEventListener("click", () => {
startBtn.style.transform = "scale(1)";
clearTimeout(initial);
setProgress(0);
mindiv.textContent = 0;
secdiv.textContent = 0;
});
pauseBtn.addEventListener("click", () => {
if (paused === undefined) {
return;
}
if (paused) {
paused = false;
initial = setTimeout("decremenT()", 60);
pauseBtn.textContent = "pause";
pauseBtn.classList.remove("resume");
} else {
clearTimeout(initial);
pauseBtn.textContent = "resume";
pauseBtn.classList.add("resume");
paused = true;
}
});
The line from newTimer.js
startBtn.addEventListener("click", () => {
and the line from setTimer.js
document.getElementById("reset").addEventListener("click", () => {
I'm using node and express for the backend side
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论