การค้นหาข้อผิดพลาดในโค้ดที่ใช้งาน DOM ใน JavaScript
ในโจทย์ต่อไปนี้ ผู้เขียนโค้ดได้เขียนโค้ดขึ้นมา และอาจจะทำผิดพลาดบางอย่าง คุณต้องตรวจสอบว่า โค้ดทำงานตามที่อธิบายไว้หรือไม่ หากโค้ด ทำงานไม่ถูกต้อง คุณต้องแก้ไขข้อผิดพลาด
โค้ดควรเพิ่มข้อความไปที่ส่วนท้าย ของทุกย่อหน้า:
<p>1</p>
<p>2</p>
<p>3</p>
let elems = document.querySelector('p');
elems.textContent += '!';
เมื่อคลิกที่ย่อหน้า ค่าของมันควร เพิ่มขึ้นหนึ่งหน่วย:
<p>1</p>
<p>2</p>
<p>3</p>
let elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', function() {
this.textContent += Number(1);
});
}
เมื่อคลิกที่ปุ่ม ข้อความในย่อหน้าควร เปลี่ยนเป็นตัวหนา:
<p>text</p>
<button>click</button>
let button = document.querySelector('button');
let elem = document.querySelector('p');
button.addEventListener('click', function() {
elem.innerHTML = '<b>elem.innerHTML</b>';
});
เมื่อคลิกที่ปุ่ม ควรแสดง ผลรวมของตัวเลขจากย่อหน้า:
<p>1</p>
<p>2</p>
<p>3</p>
<button>click</button>
let button = document.querySelector('button');
let elems = document.querySelector('p');
button.addEventListener('click', function() {
let sum = 0;
for (let elem of elems) {
sum += Number(elems.textContent);
}
console.log(sum);
});
เมื่อคลิกที่ย่อหน้า ควรมีข้อความที่กำหนด ถูกเพิ่มไปที่ส่วนท้ายของมัน:
<p>1</p>
<p>2</p>
<p>3</p>
let elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', () => {
this.textContent += '!';
});
}
เมื่อคลิกที่ปุ่ม ข้อความของแต่ละ ย่อหน้าควรเปลี่ยนเป็นตัวหนา:
<p>text1</p>
<p>text2</p>
<p>text3</p>
<button>click</button>
let button = document.querySelector('button');
let elems = document.querySelectorAll('p');
button.addEventListener('click', function() {
for (let elem of elems) {
elem.innerHTML = '<b>+elem.innerHTML+</b>';
}
});
เมื่อคลิกที่ปุ่ม ควรแสดง ผลรวมของตัวเลขจากย่อหน้าในคอนโซล:
<p>1</p>
<p>2</p>
<p>3</p>
<button>click</button>
let button = document.querySelector('button');
let elems = document.querySelectorAll('p');
let sum = 0;
for (let elem of elems) {
sum = elem.textContent + 1;
button.addEventListener('click', function() {
console.log(sum);
});
}
ป้อนตัวเลขลงในอินพุต เมื่อคลิกที่ปุ่ม ควรแสดงผลรวมของตัวเลข จากอินพุตในคอนโซล:
<input>
<input>
<input>
<button>click</button>
let button = document.querySelector('button');
let elems = document.querySelectorAll('input');
let sum = 0;
for (let elem of elems) {
sum += elem.value;
}
button.addEventListener('click', function() {
console.log(sum);
});
ป้อนตัวเลขลงในสองอินพุตแรก เมื่อคลิกที่ปุ่ม ในอินพุตที่สาม ควรแสดงผลรวมของตัวเลขเหล่านี้:
<input id="inp1">
<input id="inp2">
<input id="inp3">
<button id="btn">click</button>
let btn = document.querySelector('#btn');
let inp1 = document.querySelector('#inp1');
let inp2 = document.querySelector('#inp2');
let inp3 = document.querySelector('#inp3');
btn.addEventListener('click', function() {
inp3.textContent = inp1.textContent + inp2.textContent;
});
ป้อนตัวเลขลงในสองอินพุตแรก เมื่อคลิกที่ปุ่ม ในย่อหน้า ควรแสดงผลรวมของตัวเลขเหล่านี้:
<input id="inp1">
<input id="inp2">
<p id="res"></p>
<button id="btn">click</button>
let btn = document.querySelector('btn');
let res = document.querySelector('res');
let inp1 = document.querySelector('inp1');
let inp2 = document.querySelector('inp2');
button.addEventListener('click', function() {
res.value = inp1.value + inp2.value;
});
เมื่อคลิกที่ปุ่ม ต้องตรวจสอบว่า ข้อความในแต่ละอินพุตตรงกัน กับข้อความในแอตทริบิวต์ data ของมันหรือไม่:
<input data-text="text1">
<input data-text="text2">
<input data-text="text3">
<button id="btn">click</button>
let inputs = document.querySelectorAll('input')
let button = document.querySelector('#button')
button.addEventListener('click',function() {
for (let input of inputs) {
if (input.value === input.dataset) {
input.classList.add('right')
} else {
input.classList.add('wrong')
}
}
});
เมื่อคลิกที่ปุ่ม ต้องตรวจสอบว่า ข้อความในแต่ละอินพุตตรงกัน กับข้อความขององค์ประกอบที่สอดคล้องกัน ในอาร์เรย์หรือไม่:
<input>
<input>
<input>
<button id="btn">click</button>
let inputs = document.querySelectorAll('input')
let button = document.querySelector('#button')
let texts = [
'text1',
'text2',
'text3',
];
button.addEventListener('click',function() {
for (let input of inputs) {
for (let text of texts) {
if (input.value === text) {
input.classList.add('right')
} else {
input.classList.add('wrong')
}
}
}
});
ป้อนตัวเลขลงในอินพุต เมื่อคลิกที่ปุ่ม ในคอนโซล ควรแสดงผลรวมของตัวเลขที่ป้อน เข้าไป:
<input>
<input>
<input>
<button id="btn">click</button>
let inputs = document.querySelectorAll('inputs');
let btn = document.querySelector('#btm');
let sum = 0;
btn.addEventListener('click', function() {
for (let input of inputs) {
sum += Number(input);
}
console.log(sum);
});
ป้อนตัวเลขลงในสองอินพุตแรก เมื่อคลิกที่ปุ่ม ในอินพุตที่สาม ควรแสดงผลรวมของตัวเลขเหล่านี้:
<input id="inp1">
<input id="inp2">
<input id="inp3">
<button id="btn">click</button>
let btn = document.querySelector('#btn');
let inp1 = document.querySelector('#inp1');
let inp2 = document.querySelector('#inp2');
let inp3 = document.querySelector('#inp3');
let sum = inp1.value + inp2.value;
btn.addEventListener('click', function() {
inp3.value = sum;
});
ป้อนตัวเลขลงในอินพุต เมื่อเสียโฟกัส ในคอนโซลควร แสดงผลรวมของตัวเลขนี้:
<input id="inp">
let inp = document.querySelector('#inp').value;
inp.addEventListener('blur', function() {
let digits = +inp.split('');
let sum = 0;
for (let digit of digits) {
sum += digit;
}
console.log(sum);
});