文章目录
JavaScript 简介
JavaScript基础入门
- 编程要求
本关的编程任务是补全右侧代码片段中 Begin 至 End 中间的代码,具体要求如下:
采用相关知识板块介绍的任意一种方法,实现输出Hello,JavaScript!。
<!DOCTYPE html>
<html>
<head>
<!-- 请在此处编写代码 -->
<!---------Begin--------->
<script>
console.log("Hello,JavaScript!");
</script>
<!---------End--------->
</head>
<body>
</body>
</html>
JavaScript与HTML
- 编程要求
本关的编程任务是补全右侧代码片段中 Begin 至 End 中间的代码,具体要求如下:
- 将下面的JavaScript代码嵌入到HTML代码中;
- 必须使用内置代码的方式。
console.log("如何在HTML代码中嵌入JavaScript代码");
<!DOCTYPE html>
<html>
<!-- 请在此处编写代码 -->
<!---------Begin--------->
<head>
<meta charset="UTF-8">
<script>console.log("如何在HTML代码中嵌入JavaScript代码");</script>
</head>
<body>
</body>
<!---------End--------->
</html>
JavaScript变量
- 编程要求
本关的编程任务是补全右侧代码片段中 Begin 至 End 中间的代码,具体要求如下:
- 定义一个局部变量 a ,并赋值使其覆盖已有的全局变量 a ;
- 定义一个全局变量 b 并初始化之;
- 上面两步必须使得函数 variableTest 返回100+10*c, c 为输入;
- 具体请参见后续测试样例。
var a = 1;
// 请在此处编写代码
/********** Begin **********/
var b=100;
/********** End **********/
function variableTest(c) {
/********** Begin **********/
var a=10;
/********** End **********/
return a*c+b;
}
JavaScript 文档元素获取
通过id获取文档元素
- 编程要求
本关的编程任务是补全右侧代码片段中 Begin 至 End 中间的代码,具体要求如下:
-
获取本文档中 id 为 a1 的文档元素,要求用 id 获取文档元素;
-
将获取的元素赋值给变量 myElement ;
-
具体请参见后续测试样例。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>get element by id</title>
</head>
<body>
<a id="a1" src="https://www.google.com">Google</a>
<p id="p1">this is a text</p>
<script>
<!-- 请在此处编写代码 -->
<!---------Begin--------->
var myElement =document.getElementById("a1");
<!---------End--------->
myElement.href="https://www.educoder.net";
</script>
</body>
</html>
通过类名获取文档元素
- 编程要求
本关的编程任务是补全右侧代码片段中 Begin 至 End 中间的代码,具体要求如下:
-
通过getElementsByClassName()方法获取文档中唯一的
元素;
-
将获取到的结果赋值给变量 myElement 。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>get element by name</title>
</head>
<body>
<img src="" class="myName"/>
<form class="myName" id="myForm"></form>
<div class="myName">This is quote</div>
<p class="myName">This is what you should get</p>
<script>
<!-- 请在此处编写代码 -->
<!---------Begin--------->
var myNodeList = document.getElementsByClassName("myName");
var myElement =myNodeList[3];
<!---------End--------->
myElement.innerText="I changed the text";
</script>
</body>
</html>
通过标签名获取文档元素
- 编程要求
本关的编程任务是补全右侧代码片段中 Begin 至 End 中间的代码,具体要求如下:
-
获取第二个 div 元素下的第二个 a 元素,要求通过使用标签名获取;
-
将获取到的结果赋值给变量 myElement 。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>get element by id</title>
</head>
<body>
<div class="diva">
<a href="https://www.educoder.net">EduCoder</a>
<a href="https://www.facebook.com">FaceBook</a>
</div>
<div class="divb">
<a href="https://www.twitter.com">Twitter</a>
<form name="myForm"></form>
<a href="https://www.nudt.edu.cn">NUDT</a>
</div>
<p id="pp">this is a text</p>
<script>
<!-- 请在此处编写代码 -->
<!---------Begin--------->
var allDiv = document.getElementsByTagName("div");
var allLink = allDiv[1].getElementsByTagName("a");
var myElement =allLink[1];
<!---------End--------->
myElement.innerText="nudt";
</script>
</body>
</html>
html5中获取元素的方法一
- 编程要求
本关的编程任务是补全右侧代码片段中 Begin 至 End 中间的代码,具体要求如下:
- 获取html代码里面的第一个文本元素,并赋值给变量 pElement ,要求使用querySelector()。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<p>你需要获得的元素是我</p>
<p>是楼上</p>
<p>是楼上的楼上</p>
<script>
<!-- 请在此处编写代码 -->
<!---------Begin--------->
var myElement = document.querySelectorAll("p");
var pElement =myElement[0];
<!---------End--------->
console.log(pElement);
</script>
</body>
</html>
html5中获取元素的方法二
- 编程要求
本关的编程任务是补全右侧代码片段中 Begin 至 End 中间的代码,具体要求如下:
- 获取 html 代码里面的所有的 p 元素,并赋值给变量 pElement ,要求使用querySelectorAll()方法。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<p>你需要获得的元素是我</p>
<p>包括我</p>
<p>还有我</p>
<script>
<!-- 请在此处编写代码 -->
<!---------Begin--------->
var pElement =document.querySelectorAll("p");
<!---------End--------->
console.log(pElement);
</script>
</body>
</html>
节点树上的操作
- 编程要求
本关的编程任务是补全右侧代码片段中 Begin 至 End 中间的代码,具体要求如下:
-
已知变量 cl2 为获取到的类为c12的节点;
-
要求获取该div 内文本为黄的 option 标签,并赋值给变量 myElement ;
-
要求使用本关相关知识中介绍的方法。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<div id="div1">
<div class="cl1">
<p>文本</p>
<a>超链接</a>
</div>
<div class="cl2">
<select>
<option>红</option>
<option>黄</option>
<option>蓝</option>
</select>
</div>
</div>
<script>
var cl2 = document.getElementById("div1").lastElementChild;
<!-- 请在此处编写代码 -->
<!---------Begin--------->
var myElement =cl2.firstElementChild.children[1];
<!---------End--------->
myElement.innerText = "绿";
</script>
</body>
</html>
属性值的获取
- 编程要求
本关的编程任务是补全右侧代码片段中 Begin 至 End 中间的代码,具体要求如下:
-
获取 html 代码里面的 class 属性的值;
-
结果赋值给变量 srcValue;
-
获取文档元素通过类名来获取。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<p id="p"></p>
<img class="imgClass"/>
<a id="a"></a>
<script>
<!-- 请在此处编写代码 -->
<!---------Begin--------->
var srcValue=document.getElementsByClassName("imgClass")[0].getAttribute("class");
<!---------End--------->
console.log(srcValue);
</script>
</body>
</html>
属性值的设置
- 编程要求
本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:
-
通过 id 来获取 from 元素(只有一个),赋值给变量 myElement ;
-
通过操作 myElement 将 form 的 method 属性改为 post;
-
要求必须分两步进行。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<p id="p"></p>
<form id="form1" method="get" target="https://abc.xyz/def/ghi">This is form</form>
<a id="a"></a>
<script>
<!-- 请在此处编写代码 -->
<!---------Begin--------->
var myElement =document.getElementById("form1");
myElement.setAttribute("method","post");
<!---------End--------->
console.log(document.getElementById("form1").method);
</script>
</body>
</html>
JavaScript 文档元素操作
创建节点
- 编程要求
本关的编程任务是补全右侧代码片段中 Begin 至 End 中间的代码,具体要求如下:
- 创建一个 form 节点,然后赋值给变量 newNode,设置节点的 id 值为 myForm,method 值为 post,如下所示:
<form id="myForm" method="post"></form>
字符串类型参数用""包含在内。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<p></p>
<script>
<!-- 请在此处编写代码 -->
<!---------Begin--------->
var newNode = document.createElement("form");
newNode.id="myForm";
newNode.method="post";
<!---------End--------->
document.body.appendChild(newNode);
console.log(newNode.method);
</script>
</body>
</html>
插入节点
- 编程要求
本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:
-
使用createElement()创建一个li类型的新节点newNode;
-
通过innerText()设置该节点内部文本的内容为Canada;
-
通过getElementById和appendChild方法将newNode节点添加到ul标签下面,作为它的最后一个子节点;
-
所有的字符串类型参数请用""包含在内;
请按照以上的步骤操作。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<ul id="ul1">
<li>America</li>
<li>Mexio</li>
</ul>
<script>
<!-- 请在此处编写代码 -->
<!---------Begin--------->
var newNode = document.createElement("li");
newNode.innerText="Canada";
var node=document.getElementById("ul1");
node.appendChild(newNode);
<!---------End--------->
var out = document.getElementsByTagName("li")[2];
console.log(out.innerText);
</script>
</body>
</html>
删除节点
- 编程要求
本关的编程任务是补全右侧代码片段中 Begin 至 End 中间的代码,要求按照步骤进行:
-
获取 id 为 browser 的节点,赋值给变量parent;
-
获取 id 为 opera 的节点,赋值给变量child;
-
通过removeChild()删除child节点;
-
获取节点使用getElementById方法;
-
字符串类型参数用""包含在内。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<ol id="browser">
<li id="chrome">Chrome</li>
<li id="firefox">Firefox</li>
<li id="opera">Opera</li>
<li id="safari">Safari</li>
</ol>
<script>
<!-- 请在此处编写代码 -->
<!---------Begin--------->
var parent = document.getElementById("browser");
var child = document.getElementById("opera");
parent.removeChild(child);
<!---------End--------->
</script>
</body>
</html>
替换节点
本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下,请按步骤操作:
-
获取 id 为 parent 的节点(父节点),赋给变量 parent;
-
获取 id 为 old 的节点(子节点),赋给变量 old;
-
newChild 已知,用 newChild 替换子节点 old;
-
使用getElementById()获取节点;
-
字符串参数用""包含在内。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<ol id="parent">
<a id="old" href="https://www.google.com">Google</a>
</ol>
<script>
var newChild = document.createElement("a");
newChild.innerText = "eduCoder";
newChild.href = "https://www.educoder.net";
<!-- 请在此处编写代码 -->
<!---------Begin--------->
var parent = document.getElementById("parent");
var old = document.getElementById("old");
parent.replaceChild(newChild,old);
<!---------End--------->
</script>
</body>
</html>
综合练习
- 编程要求
本关的编程任务是补全右侧代码片段中 Begin 至 End 中间的代码,具体要求如下:
-
继续拓展相关知识中介绍的功能,要求第一列选择安徽省后,第二列下拉的选项中出现黄山市和合肥市两个选项,按照以下步骤进行;
-
创建一个 option 类型节点 child2;
-
设置 child2 的 value 属性的值为 HeFeiCity;
-
设置 child2 的显示的文本为 合肥市;
-
将 child2 设置为 id 为 city 的节点下面的第二个子节点;
-
使用getElementById()获取节点;
-
字符串类型的参数用""包含在内。
<html>
<head>
<title>myTitle</title>
<meta charset="utf-8" />
</head>
<body>
<select id="province" onChange="changeCity()">
<option value="BeiJing" id="bj">北京</option>
<option value="AnHui" id="ah">安徽</option>
</select>
<select id="city">
<option value="BeiJingCity">北京市</option>
</select>
<script>
function changeCity() {
var province = document.getElementById("province");
var city = document.getElementById("city");
var length = city.children.length;
for(var i = length-1;i >= 0;i--) {
city.removeChild(city.children[i]);
}
if(province.value == "BeiJing") {
var child1 = document.createElement("option");
child1.value="BeiJingCity";
child1.innerText="北京市"
city.appendChild(child1);
} else {
var child1 = document.createElement("option");
child1.value="HuangShanCity";
child1.innerText="黄山市";
city.appendChild(child1);
//请在此处编写代码
/*********Begin*********/
var child2 = document.createElement("option");
child2.value="HeFeiCity";
child2.innerText="合肥市";
city.appendChild(child2);
/*********End*********/
}
}
</script>
</body>
</html>
JavaScript 事件处理
注册事件处理程序
- 编程要求
本关的编程任务是补全右侧代码片段中 Begin 至 End 中间的代码,具体要求如下:
- 通过getElementById()获取id为 button2 的按钮,赋值给变量 button2 ,然后使用button2.onclick()方法为该按钮绑定事件处理程序listenButton2();
- 通过getElementById()获取id为button3的按钮,赋值给变量button3,然后使用button3.addEventListener()方法为该按钮绑定click事件的事件处理程序listenButton3()。
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<button id="button1" onclick="listenButton1()">按钮1</button>
<button id="button2">按钮2</button>
<button id="button3">按钮3</button>
<script>
function listenButton1() {
console.log("监听button1");
}
function listenButton2() {
console.log("监听button2");
}
function listenButton3() {
console.log("监听button3");
}
//请在此处编写代码
/********** Begin **********/
document.getElementById("button2").onclick=function(){
listenButton2();
}
document.getElementById("button3").addEventListener("click",function(){
listenButton3();
}) /********** End **********/
</script>
</body>
</html>
文档加载事件
- 编程要求
本关的编程任务是补全右侧代码片段中 Begin 至 End 中间的代码,具体要求如下:
-
在文档加载完成后(即文档加载事件发生后),在控制台输出 Welcome!;
-
字符串放在英文双引号内。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body onload="loadEvent()">
<script>
function loadEvent() {
//请在此处编写代码
/********** Begin **********/
console.log("Welcome!");
/********** End **********/
}
</script>
</body>
</html>
鼠标事件
- 编程要求
本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:
-
第一步:通过id获取button(按钮)元素,赋给变量myButton;
-
第二步:通过addEventListener为按钮绑定一个事件处理程序,用来处理按钮的鼠标单击事件;
-
第三步:在事件处理程序中,通过id获取p元素,赋给变量myElement,然后设置当按钮被单击后,p里面的文本被改变为clicked;
-
字符串类型的参数用""包含在内;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<p id="p">
text
</p>
<button id="but">
button
</button>
<script>
//请在此处编写代码
/********** Begin **********/
var myButton = document.getElementById("but");
myButton.addEventListener("click",function() {
var myElement = document.getElementById("p");
myElement.innerText="clicked";
})
/********** End **********/
</script>
</body>
</html>
键盘事件
- 编程要求
本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下,请按步骤操作:
-
获取用户按下的按键的编码,赋值给变量code;
-
判断code的值是否为13,是则在控制台打印cannot use enter。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body onkeypress="pressEvent(event)">
<script>
function pressEvent(event) {
//请在此处编写代码
/********** Begin **********/
var code = event.which;
if (code == 13) {
console.log("cannot use enter");
}
/********** End **********/
}
</script>
</body>
</html>
表单事件
- 编程要求
本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:
-
通过id属性获取id为input的文本框,赋值给变量ele;
-
获取输入框中当前文本的长度,赋值给变量len;
-
判断len的值是否小于等于12,是则打印出too short input;
-
字符串参数务必置于双引号之内。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form>
<input id="input" type="text" onchange="changeEvent()" />
<input id="input2" type="text" />
</form>
<script>
function changeEvent() {
//请在此处编写代码
/********** Begin **********/
if(document.getElementById("input").value.length<=12){
console.log("too short input")
}
/********** End **********/
}
</script>
</body>
</html>
拖动事件
- 编程要求
本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:
-
在第一个Begin和End中间设置p元素为可拖动的;
-
在第二个Begin和End中间使用event.target.innerText在控制台打印p元素里面的内容;
要求必须按照以上的步骤执行。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div>
<!-- 请在此处编写代码 -->
<!---------Begin--------->
<p ondrag="dragging(event)" id="p1" draggable="true">drag me</p>
<!---------End--------->
</div>
<script>
function dragging(event) {
/********** Begin **********/
console.log(event.target.innerText);
/********** End **********/
}
</script>
</body>
</html>
事件冒泡
- 编程要求
本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:
- 在id为div2的元素上面阻止click事件的冒泡。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div id="div1" onclick="click1()">
<div id="div2" onclick="click2()">
<p id="p" onclick="click3()">click me!</p>
</div>
</div>
<script>
function click1() {
console.log("root");
}
function click2() {
//请在此处编写代码
/********** Begin **********/
window.event?window.event.cancelBubble=true:event.stopPropagation();
/********** End **********/
console.log("parent");
}
function click3() {
console.log("child");
}
</script>
</body>
</html>
JavaScript 浏览器对象模型
定时器
- 编程要求
本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:
- 第一步,设置执行一次的定时任务timerTask(),延迟为2000毫秒,任务的唯一标识赋值给变量timeId。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<p onclick="handleTimer()">set timer then undo</p>
<script>
var timeId;
function timerTask() {
console.log("this is timer task");
}
function handleTimer() {
//请在此处编写代码
/********** Begin **********/
timeId=window.setTimeout(timerTask,2000);
/********** End **********/
}
</script>
</body>
</html>
循环定时器
- 编程要求
本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下,请按步骤操作:
- 取消定时任务timerTask1(),要求使用本关介绍的方法。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<p onclick="task1()">this is task onea</p>
<p onclick="task2()">this is task two</p>
<p onclick="removeTask1()">try to remove task one</p>
<script>
var timeId1;
var timeId2;
function timerTask1() {
console.log("timerTask1!");
}
function timerTask2() {
console.log("timerTask2!");
}
function task1() {
timeId1 = window.setInterval(timerTask1,2000);
}
function task2() {
timeId2 = window.setInterval(timerTask2,1500);
}
function removeTask1() {
//请在此处编写代码
/********** Begin **********/
window.clearInterval(timeId1);
/********** End **********/
}
</script>
</body>
</html>
location对象
- 编程要求
本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:
-
第一步,获取location对象,赋值给变量loc;
-
第二步,利用loc打印出当前页面地址的主机名;
-
第三步,利用loc实现跳转到https://www.educoder.net/forums/categories/all?order=newest;
-
字符串参数放在英文双引号内。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<p onclick="openNew()">Click me to new page!</p>
<script>
function openNew() {
//请在此处编写代码
/********** Begin **********/
window.location.href = "https://www.educoder.net/forums/categories/all?order=newest";
/********** End **********/
}
</script>
</body>
</html>
对话框
- 编程要求
本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:
-
第一步:弹出一个输入型对话框(输入框),用户的输入结果赋值给变量result,输入框提示语为your name,输入框默认值为Xiao Ming;
-
第二步:使用result判断用户的输入是否为null(不是字符串null,是表示空的null),如果是,在控制台打印name cannot be null;
-
字符串类型的参数用""包含在内。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<p onclick="inputName()">Click to input name!</p>
<script>
function inputName() {
var result;
//请在此处编写代码
/********** Begin **********/
result=window.prompt("your name","Xiao Ming");
if(result){
console.log(name cannot be null);
}
/********** End **********/
}
</script>
</body>
</html>
窗口
- 编程要求
本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:
- 第一步,打开一个窗口,它的文档的地址是Demo.html,name属性是窗口名字window_name,specs和replace不用设置。将打开的窗口赋值给变量myWindow;
- 字符串参数放在英文双引号内。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<p onclick="openNewWindow()">open new window</p>
<script>
var myWindow;
function openNewWindow() {
//请在此处编写代码
/********** Begin **********/
myWindow=window.open("Demo.html","window_name");
/********** End **********/
}
</script>
</body>
</html>