Javascript 当我将css和js分离成文件并将它们链接回主html时,任务列表的工作方式就不同了
在这个问题中,当一切都在一起时,我的html工作得很好,如图所示,但是当我将js和css的src文件链接到该文件,而不是在我的主html中有太多代码时,它在这里无法正常工作 -原始htmlJavascript 当我将css和js分离成文件并将它们链接回主html时,任务列表的工作方式就不同了,javascript,html,css,Javascript,Html,Css,在这个问题中,当一切都在一起时,我的html工作得很好,如图所示,但是当我将js和css的src文件链接到该文件,而不是在我的主html中有太多代码时,它在这里无法正常工作 -原始html <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1"> <style>
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body {
margin: 0;
min-width: 250px;
}
/* Include the padding and border in an element's total width and height */
* {
box-sizing: border-box;
}
/* Remove margins and padding from the list */
ul {
margin: 0;
padding: 0;
}
/* Style the list items */
ul li {
cursor: pointer;
position: relative;
padding: 12px 8px 12px 40px;
list-style-type: none;
background: #eee;
font-size: 18px;
transition: 0.2s;
/* make the list items unselectable */
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
/* Set all odd list items to a different color (zebra-stripes) */
ul li:nth-child(odd) {
background: #f9f9f9;
}
/* Darker background-color on hover */
ul li:hover {
background: #ddd;
}
/* When clicked on, add a background color and strike out text */
ul li.checked {
background: #888;
color: #fff;
text-decoration: line-through;
}
/* Add a "checked" mark when clicked on */
ul li.checked::before {
content: '';
position: absolute;
border-color: #fff;
border-style: solid;
border-width: 0 2px 2px 0;
top: 10px;
left: 16px;
transform: rotate(45deg);
height: 15px;
width: 7px;
}
/* Style the close button */
.close {
position: absolute;
right: 0;
top: 0;
padding: 12px 16px 12px 16px;
}
.close:hover {
background-color: #f44336;
color: white;
}
/* Style the header */
.header {
background-color: #f4a3dc;
padding: 30px 40px;
color: white;
text-align: center;
}
/* Clear floats after the header */
.header:after {
content: "";
display: table;
clear: both;
}
/* Style the input */
input {
margin: 0;
border: none;
border-radius: 0;
width: 75%;
padding: 10px;
float: left;
font-size: 16px;
}
/* Style the "Add" button */
.addBtn {
padding: 50px;
width: 15%;
background: #d9d9d9;
color: #555;
float: left;
text-align: center;
font-size: 16px;
cursor: pointer;
transition: 0.3s;
border-radius: 0;
}
.addBtn:hover {
background-color: #bbb;
}
</style>
</head>
<body>
<div id="myDIV" class="header">
<h2 style="margin:5px">My To Do List</h2>
<input type="text" id="myInput" placeholder="Title...">
<input type="number" id="myInput1" placeholder="Insert Priority Number (1 being lowest to 3 being highest) ">
<span onclick="newElement()" class="addBtn">Add</span>
</div>
<ul id="myUL">
</ul>
<script>
// Create a "close" button and append it to each list item
var myNodelist = document.getElementsByTagName("LI");
var i;
for (i = 0; i < myNodelist.length; i++) {
var span = document.createElement("SPAN");
var txt = document.createTextNode("\u00D7");
span.className = "close";
span.appendChild(txt);
myNodelist[i].appendChild(span);
}
// Click on a close button to hide the current list item
var close = document.getElementsByClassName("close");
var i;
for (i = 0; i < close.length; i++) {
close[i].onclick = function() {
var div = this.parentElement;
div.style.display = "none";
}
}
// Add a "checked" symbol when clicking on a list item
var list = document.querySelector('ul');
list.addEventListener('click', function(ev) {
if (ev.target.tagName === 'LI') {
ev.target.classList.toggle('checked');
}
}, false);
// Create a new list item when clicking on the "Add" button
function newElement() {
var li = document.createElement("li");
var inputValue = document.getElementById("myInput").value;
var inputValue1 = document.getElementById("myInput1").value;
var t = document.createTextNode(inputValue);
var s = document.createTextNode(inputValue1);
li.appendChild(t);
if (inputValue1== 1){
li.style.backgroundColor = "#8cf458";
}
else if (inputValue1==2){
li.style.backgroundColor = "#faed52";
}
else if (inputValue1==3){
li.style.backgroundColor = "#ff5c5c";
}
if(inputValue1 <1){
alert("Only numbers between 1-3!!");
}
if(inputValue1 >3){
alert("Only numbers between 1-3!!");
}
if (inputValue === '') {
alert("You must write something!");
} else {
document.getElementById("myUL").appendChild(li);
}
document.getElementById("myInput").value = "";
var span = document.createElement("SPAN");
var txt = document.createTextNode("\u00D7");
span.className = "close";
span.appendChild(txt);
li.appendChild(span);
for (i = 0; i < close.length; i++) {
close[i].onclick = function() {
var div = this.parentElement;
div.style.display = "none";
}
}
}
</script>
</body>
</html>
-js文件
document.addEventListener("DOMContentLoaded", (){
var myNodelist = document.getElementsByTagName("LI");
var i;
for (i = 0; i < myNodelist.length; i++) {
var span = document.createElement("SPAN");
var txt = document.createTextNode("\u00D7");
span.className = "close";
span.appendChild(txt);
myNodelist[i].appendChild(span);
}
// Click on a close button to hide the current list item
var close = document.getElementsByClassName("close");
var i;
for (i = 0; i < close.length; i++) {
close[i].onclick = function() {
var div = this.parentElement;
div.style.display = "none";
}
}
// Add a "checked" symbol when clicking on a list item
var list = document.querySelector('ul');
list.addEventListener('click', function(ev) {
if (ev.target.tagName === 'LI') {
ev.target.classList.toggle('checked');
}
}, false);
// Create a new list item when clicking on the "Add" button
function newElement() {
var li = document.createElement("li");
var inputValue = document.getElementById("myInput").value;
var inputValue1 = document.getElementById("myInput1").value;
var t = document.createTextNode(inputValue);
var s = document.createTextNode(inputValue1);
li.appendChild(t);
if (inputValue1== 1){
li.style.backgroundColor = "#8cf458";
}
else if (inputValue1==2){
li.style.backgroundColor = "#faed52";
}
else if (inputValue1==3){
li.style.backgroundColor = "#ff5c5c";
}
if(inputValue1 <1){
alert("Only numbers between 1-3!!");
}
if(inputValue1 >3){
alert("Only numbers between 1-3!!");
}
if (inputValue === '') {
alert("You must write something!");
} else {
document.getElementById("myUL").appendChild(li);
}
document.getElementById("myInput").value = "";
var span = document.createElement("SPAN");
var txt = document.createTextNode("\u00D7");
span.className = "close";
span.appendChild(txt);
li.appendChild(span);
for (i = 0; i < close.length; i++) {
close[i].onclick = function() {
var div = this.parentElement;
div.style.display = "none";
}
}
}
document.addEventListener(“DOMContentLoaded”,(){
var myNodelist=document.getElementsByTagName(“LI”);
var i;
对于(i=0;i
}在运行的版本中,JavaScript位于HTML之后。这确保了JS不会开始运行并尝试引用HTML元素,直到它们被加载 在不起作用的版本中,JavaScript从一开始就开始加载,因此还没有找到HTML元素 把
<script src="tasklist.js"></script>
最后,就在之前,应该解决这个问题。在运行的版本中,JavaScript位于HTML之后。这确保了JS在加载HTML元素之前不会开始运行并尝试引用HTML元素 在不起作用的版本中,JavaScript从一开始就开始加载,因此还没有找到HTML元素 把
<script src="tasklist.js"></script>
最后,就在html文件之前,应该解决这个问题。一件事,在新链接中的
.css
文件名后面有一个空格。除此之外,新文件是否与html文件位于同一目录中,或者新文件是否位于子目录中,例如js
和css
?此外,请尝试清除浏览器缓存,以查看是否存在此问题1.将脚本
标记放在正文末尾或添加延迟
属性。2.将所有JS代码包装在文档中。addEventListener(“DOMContentLoaded”,()=>{…})
@gugadev如中所述,只是将其作为一切的开头?我的意思是没有添加任何代码,只是将其放在一个括号中,并用该括号将其关闭在我的js代码的末尾?对于脚本标记,我对其在正文末尾的位置感到困惑?js问题很可能是这些代码都是在DOM之前执行的因此,querySelector
可能会因此返回null
。这就是为什么需要将代码放入DOMContentLoaded
侦听器中,以确保在DOM完全加载后执行代码。另一种方法是在脚本
标记中使用defer
属性。为什么贡告诉浏览器:“加载文档后执行脚本代码”@gugadev所以我尝试将DomContentLoaded添加到js文件中,我用括号结束了它的结尾,但是当我回到我的HTML时,当我添加任务时,它不会提交任何内容?对于延迟/脚本标记,github不允许js文件中有HTML标记,我感谢你能提供的所有帮助,尽管我在这个问题上遇到了难题ng,新链接中的.css
文件名后面有一个空格。除此之外,新文件是否与html文件位于同一目录中,或者新文件是否位于子目录中,如js
和css
?此外,请尝试清除浏览器缓存以查看这是否有任何区别。1.将脚本
标记放在结束正文或添加defer
属性。2.将所有JS代码包装在文档中。addEventListener(“DOMContentLoaded”,()=>{…})
@gugadev如中所述,只是将其作为一切的开头?我的意思是没有添加任何代码,只是将其放在一个括号中,并用该括号将其关闭在我的js代码的末尾?对于脚本标记,我对其在正文末尾的位置感到困惑?js问题很可能是这些代码都是在DOM之前执行的因此,q
<script src="tasklist.js"></script>