目录

JSON

第1关: JSON对象

第2关: JSON数组

第3关: JSON字符串

Math、日期和异常处理

第1关: Math类

第2关: Date类

第3关: JavaScript错误

HTML DOM——文档元素的操作(一)

第1关: 通过id获取文档元素

第2关: 通过类名获取文档元素

第3关: 通过标签名获取文档元素

第4关: html5中获取元素的方法一

第5关: html5中获取元素的方法二

第6关: 节点树上的操作

第7关: 属性值的获取

第8关: 属性值的设置

HTML DOM——文档元素的操作(二)

第1关: 创建节点

第2关: 插入节点

第3关: 删除节点

第4关: 替换节点

第5关: 综合练习

事件处理

第1关: 注册事件处理程序

第2关: 文档加载事件

第3关: 鼠标事件

第4关: 键盘事件

第5关: 表单事件

第6关: 拖动事件

第7关: 事件冒泡

浏览器对象模型

第1关: 定时器

第2关: 循环定时器

第3关: location对象

第4关: 对话框

第5关: 窗口


JSON

第1关: JSON对象

function mainJs(a,b,c) {//请在此处编写代码/********** Begin **********/var JSONObject = {"key1":a,"key2":b,"key3":c};//定义JSON对象delete JSONObject.key3;//删除名字为key3的属性var result = "";for(var att in JSONObject) {//遍历剩余所有的属性result = result+JSONObject[att]+",";}return result.slice(0,-1); /********** End **********/}

第2关: JSON数组

var myJson = {"category":"computer","detail":"programming","language":["js","java","php","python","c"]}function mainJs(a) {a = parseInt(a);//请在此处编写代码/********** Begin **********/var result = "";for(var i = 0;i < a;i++) {result = result+myJson.language[i]+",";}return result.slice(0,-1); /********** End **********/}

第3关: JSON字符串

var JSONString = '{"key1":"value1","key2":"value2"}';function mainJs(a) {//请在此处编写代码/********** Begin **********///JSON字符串转换为JSON对象var JSONObject = JSON.parse(JSONString);//修改key1属性的值为参数aJSONObject.key1 = a;//JSON对象转换为JSON字符串并返回return JSON.stringify(JSONObject); /********** End **********/}

Math、日期和异常处理

第1关: Math类

function mainJs(a) {a = parseInt(a);//请在此处编写代码/********** Begin **********/var b = Math.ceil(a);var c = Math.floor(a);var d = Math.sqrt(a);var e = Math.round(a);var f = Math.sin(a);return Math.max(b,c,d,e,f)+Math.min(b,c,d,e,f); /********** End **********/}

第2关: Date类

function mainJs(a) {a = parseInt(a);var date = new Date(a);//请在此处编写代码/********** Begin **********/var year = date.getFullYear();var month = date.getMonth();var cal = date.getDate();var day = date.getDay();return year+","+month+","+cal+","+day; /********** End **********/}

第3关: JavaScript错误

function mainJs(a) {//请在此处编写代码/********** Begin **********/try {if(a < 0)throw new Error("negative cannot be rooted");if(a == 0)throw new Error("zero cannot be numerator");return 1/(Math.sqrt(a));}catch(err) {return err.message;}/********** End **********/}

HTML DOM——文档元素的操作(一)

第1关: 通过id获取文档元素

get element by idGoogle

this is a text

var myElement = document.getElementById("a1");myElement.href="https://www.educoder.net";

第2关: 通过类名获取文档元素

get element by nameThis is quote

This is what you should get

var myElement = document.getElementsByClassName("myName")[3];myElement.innerText="I changed the text";

第3关: 通过标签名获取文档元素

get element by idEduCoderFaceBookTwitterNUDT

this is a text

var temp= document.getElementsByTagName("div")[1]; var myElement = temp.getElementsByTagName("a")[1];myElement.innerText="nudt";

第4关: html5中获取元素的方法一

你需要获得的元素是我

是楼上

是楼上的楼上

var pElement = document.querySelector("p");console.log(pElement);

第5关: html5中获取元素的方法二

你需要获得的元素是我

包括我

还有我

var pElement = document.querySelectorAll("p");console.log(pElement);

第6关: 节点树上的操作

myTitle

文本

超链接红黄蓝var cl2 = document.getElementById("div1").lastElementChild;var myElement = cl2.firstElementChild.children[1];myElement.innerText = "绿";

第7关: 属性值的获取

var myElement = document.getElementsByClassName("imgClass")[0];var srcValue = myElement.className;console.log(srcValue);

第8关: 属性值的设置

This is formvar myElement = document.getElementById("form1");myElement.method = "post";console.log(document.getElementById("form1").method);

HTML DOM——文档元素的操作(二)

第1关: 创建节点

var newNode = document.createElement("form");newNode.method = "post";newNode.id = "myForm";document.body.appendChild(newNode);console.log(newNode.method);

第2关: 插入节点

  • America
  • Mexio
var newNode = document.createElement("li");newNode.innerText = "Canada";document.getElementById("ul1").appendChild(newNode);var out = document.getElementsByTagName("li")[2];console.log(out.innerText);

第3关: 删除节点

  1. Chrome
  2. Firefox
  3. Opera
  4. Safari
var parent = document.getElementById("browser");var child = document.getElementById("opera");parent.removeChild(child);

第4关: 替换节点

    Google
var newChild = document.createElement("a");newChild.innerText = "eduCoder";newChild.href = "https://www.educoder.net";var parent = document.getElementById("parent");var old = document.getElementById("old");parent.replaceChild(newChild,old);

第5关: 综合练习

myTitle北京安徽北京市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*********/}}

事件处理

第1关: 注册事件处理程序

Titlefunction listenButton1() {console.log("监听button1");}function listenButton2() {console.log("监听button2");}function listenButton3() {console.log("监听button3");}//请在此处编写代码/********** Begin **********/var button2 = document.getElementById("button2");button2.onclick = listenButton2;var button3 = document.getElementById("button3");button3.addEventListener("click",listenButton3);/********** End **********/

第2关: 文档加载事件

Titlefunction loadEvent() {//请在此处编写代码/********** Begin **********/console.log("Welcome!");/********** End **********/}

第3关: 鼠标事件

Title

text

//请在此处编写代码/********** Begin **********/var myButton = document.getElementById("but");myButton.addEventListener("click",function() {var myElement = document.getElementById("p");myElement.innerText="clicked";})/********** End **********/

第4关: 键盘事件

Titlefunction pressEvent(event) {//请在此处编写代码/********** Begin **********/var code = event.which;if (code == 13) {console.log("cannot use enter");}/********** End **********/}

第5关: 表单事件

Title function changeEvent() {//请在此处编写代码/********** Begin **********/var ele = document.getElementById("input");var len = ele.value.length;if (len <= 12) {console.log("too short input");}/********** End **********/}

第6关: 拖动事件

Title

drag me

function dragging(event) { /********** Begin **********/console.log(event.target.innerText);/********** End **********/}

第7关: 事件冒泡

Title

click me!

function click1() {console.log("root");}function click2() {//请在此处编写代码/********** Begin **********/ window.event" />

浏览器对象模型

第1关: 定时器

Title

set timer then undo

var timeId;function timerTask() {console.log("this is timer task");}function handleTimer() {//请在此处编写代码/********** Begin **********/timeId = window.setTimeout(timerTask,2000);/********** End **********/}

第2关: 循环定时器

Title

this is task onea

this is task two

try to remove task one

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 **********/}

第3关: location对象

Title

Click me to new page!

function openNew() {//请在此处编写代码/********** Begin **********/var loc = window.location;console.log(loc.hostname);loc.href = "https://www.educoder.net/forums/categories/all?order=newest";/********** End **********/}

第4关: 对话框

Title

Click to input name!

function inputName() {var result;//请在此处编写代码/********** Begin **********/result = window.prompt("your name", "XiaoMing");if (result === null) {console.log("name cannot be null");} /********** End **********/}

第5关: 窗口

Title

open new window

var myWindow;function openNewWindow() {//请在此处编写代码/********** Begin **********/myWindow = window.open("Demo.html", "window_name");/********** End **********/}