答:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document Object Model</title>
</head>
<body>
<div>
<p>
<span></span>
</p>
<label></label>
<input> // other elements
</div>
</body>
</html>
上面代码的DOM的图形表示类似于
JavaScript中的文档对象代表DOM。
它为我们提供了许多可用于选择元素以更新元素内容的方法。
答:
property
类似于特定元素的实例变量。property
可以是各种数据类型。property
。attributes
位于HTML中,而不是DOM中。attributes
类似于property
,但不如其功能强大。property
,建议使用property
而不是attribute
。与property
不同,attribute
是字符串数据类型答:
创建一个Cookie:
使用JS创建Cookie的最基本方法是为文档分配一个字符串值。
document.cookie = “key1 = value1; key2 = value2; … ; keyN= valueN; expires = date”;
读取Cookie:
cookie
就像创建一样简单。Cookie
对象是cookie
,只要您想访问cookie
,就使用此字符串。document.cookie
字符串保留一对name = value
列表,其中一个分号将每对分开。删除Cookie:
deleted.assign
文档的字符串值很重要。答:
Capturing Phase
–事件从窗口开始,然后下降到每个元素,直到到达目标元素。
2.Target Phase
–事件已达到目标元素。
3.Bubbling Phase
–事件从目标元素冒泡,然后上升到每个元素,直到到达窗口。答: 当事件发生在DOM元素上时,该事件并不完全发生在那个元素上。
在Bubbling Phase
中,事件冒泡,或者到达父级,祖父级,祖父的父级,直到到达窗口为止。
如果我们有像这样的示例标记
<div class="grandparent">
<div class="parent">
<div class="child">1</div>
</div>
</div>
和javascript代码。
function addEvent(el, event, callback, isCapture = false) {
if (!el || !event || !callback || typeof callback !== 'function') return;
if (typeof el === 'string') {
el = document.querySelector(el);
};
el.addEventListener(event, callback, isCapture);
}
addEvent(document, 'DOMContentLoaded', () => {
const child = document.querySelector('.child');
const parent = document.querySelector('.parent');
const grandparent = document.querySelector('.grandparent');
addEvent(child, 'click', function (e) {
console.log('child');
});
addEvent(parent, 'click', function (e) {
console.log('parent');
});
addEvent(grandparent, 'click', function (e) {
console.log('grandparent');
});
addEvent(document, 'click', function (e) {
console.log('document');
});
addEvent('html', 'click', function (e) {
console.log('html');
});
addEvent(window, 'click', function (e) {
console.log('window');
});
});
addEventListener()
方法具有第三个可选参数useCapture,其默认值为false,事件将在Bubbling phase
中发生。useCapture
是true
,则事件将在Capturing Phase
中发生。child, parent, grandparent, html, document 和window
分别记录在控制台上。答: 当事件发生在DOM元素上时,该事件并不完全发生在那个元素上。 在捕获阶段,事件从窗口开始一直到触发事件的元素。
如果我们有这样的示例标记
<div class="grandparent">
<div class="parent">
<div class="child">1</div>
</div>
</div>
和JavaScript代码是
function addEvent(el, event, callback, isCapture = false) {
if (!el || !event || !callback || typeof callback !== 'function') return;
if (typeof el === 'string') {
el = document.querySelector(el);
};
el.addEventListener(event, callback, isCapture);
}
addEvent(document, 'DOMContentLoaded', () => {
const child = document.querySelector('.child');
const parent = document.querySelector('.parent');
const grandparent = document.querySelector('.grandparent');
addEvent(child, 'click', function (e) {
console.log('child');
}, true);
addEvent(parent, 'click', function (e) {
console.log('parent');
}, true);
addEvent(grandparent, 'click', function (e) {
console.log('grandparent');
}, true);
addEvent(document, 'click', function (e) {
console.log('document');
}, true);
addEvent('html', 'click', function (e) {
console.log('html');
}, true)
addEvent(window, 'click', function (e) {
console.log('window');
}, true)
});
addEventListener()
方法具有第三个可选参数useCapture
,其默认值为false,事件将在Bubbling phase
中发生。useCapture
是true
,则事件将在Capturing Phase
中发生。window, document, html, grandparent, parent和child
分别记录在控制台上。答:
event.preventDefault()
方法可防止元素的默认行为。event.stopPropagation()
方法停止事件的传播时。答:
event.preventDefault()
。顶部↑
答:
Closures
。让我们看一个例子
没有Closure
function greet(message) {
console.log(message);
}
function greeter(name, number) {
return name + " says Hey!! He has " + age + " subscribers";
}
var message = greeter("Tech Talks", 1026);
greet(message);
有Closure
function greeter(name, age) {
var message = name + " says Hey!! He has " + age + " subscribers";
return function greet() {
console.log(message);
};
}
// Generate the closure
var TechTalksGreeter = greeter("Tech Talks", 1026);
// Use the closure
TechTalksGreeter();
答: 使用JavaScript创建数组的方法有以下三种:
var someArray = new Array();
var someArray = new Array(‘value1’, ‘value2’,…, ‘valueN’)
var someArray = [value1, value2,…., valueN];
感谢您阅读本篇博客文章,希望对您有帮助。我很快将更新该系列的第3-10部分,我会保持每天至少更新一篇,关注我,或者❤或📑把本篇文章收藏起来,我会把后续文章链接放在本篇文章末尾。