<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Our supersheet</title>
<link href="https://fonts.googleapis.com/css?family=Faster+One" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="style.css">
</head> <body>
<header > </header><!-- /header --> <section> </section>
<script src="script/main.js"> </script>
</body>
</html>

style.css

 /* || general styles */

 html {
font-family: 'helvetica neue', helvetica, arial, sans-serif;
} body {
width: 800px;
margin: 0 auto;
} h1, h2 {
font-family: 'Faster One', cursive;
} /* header styles */ h1 {
font-size: 4rem;
text-align: center;
} header p {
font-size: 1.3rem;
font-weight: bold;
text-align: center;
} /* section styles */ section article {
width: 33%;
float: left;
} section p {
margin: 5px 0;
} section ul {
margin-top:;
} h2 {
font-size: 2.5rem;
letter-spacing: -5px;
margin-bottom: 10px;
}

main.js

 var header = document.querySelector('header');
var section = document.querySelector('section'); var requestURL = 'https://mdn.github.io/learning-area/javascript/oojs/json/superheroes.json';
var request = new XMLHttpRequest();//API,创建请求,只需要更新小部分而无需加载整个页面
request.open('GET', requestURL);//初始化请求,get--HTTP方法
request.responseType = 'text';//响应类型
request.send();//send方法,发送请求 request.onload = function() {//request,声明的对象;onload,自定义的方法
var superHeroesText = request.response;//response,属性
var superHeroes = JSON.parse(superHeroesText);
populateHeader(superHeroes);//自定义函数,调用
showHeroes(superHeroes);//superHeroes作用域在function,基于json的js对象
}
/**
* [populateHeader description]
* @param {[type]} jsonObj [description]
* @return {[type]} [description]
*/
function populateHeader(jsonObj) {//函数定义,形参
var myH1 = document.createElement('h1');//声明变量myH1,赋值h1元素
myH1.textContent = jsonObj['squadName'];//文本内容属性,赋值squadName对象的属性
header.appendChild(myH1);//header结点,增加一个myH1子节点,将其附加到标题appendChild() var myPara = document.createElement('p');//
myPara.textContent = 'Hometown: ' + jsonObj['homeTown'] + ' // Formed: ' + jsonObj['formed'];//把对象home Town和formed属性的lianjiezifuc
header.appendChild(myPara); }
/**
* [showHeroes description]
* @param {[type]} jsonObj [description]
* @return {[type]} [description]
*/
function showHeroes(jsonObj) {//创建并显示超级英雄卡
var heroes = jsonObj['members']; for (var i = 0; i < heroes.length; i++) {//members数组对象;创建了几个新元素article、h2。。。。
var myArticle = document.createElement('article');
var myH2 = document.createElement('h2');
var myPara1 = document.createElement('p');
var myPara2 = document.createElement('p');
var myPara3 = document.createElement('p');
var myList = document.createElement('ul'); myH2.textContent = heroes[i].name;
myPara1.textContent = 'Secret identity: ' + heroes[i].secretIdentity;
myPara2.textContent = 'Age: ' + heroes[i].age;
myPara3.textContent = 'Superpowers:';//值为数组,又用一个循环处理 var superPowers = heroes[i].powers;//嵌套循环,
for (var j = 0; j < superPowers.length; j++) {
var listItem = document.createElement('li');
listItem.textContent = superPowers[j];
myList.appendChild(listItem);
} myArticle.appendChild(myH2);//在myArticle中增加子节点,把获取的值显现在html中
myArticle.appendChild(myPara1);
myArticle.appendChild(myPara2);
myArticle.appendChild(myPara3);
myArticle.appendChild(myList); section.appendChild(myArticle);//把myArticle的值放入section
}
}

json文件(https://mdn.github.io/learning-area/javascript/oojs/json/superheroes.json

 {
"squadName" : "Super hero squad",
"homeTown" : "Metro City",
"formed" : 2016,
"secretBase" : "Super tower",
"active" : true,
"members" : [
{
"name" : "Molecule Man",
"age" : 29,
"secretIdentity" : "Dan Jukes",
"powers" : [
"Radiation resistance",
"Turning tiny",
"Radiation blast"
]
},
{
"name" : "Madame Uppercut",
"age" : 39,
"secretIdentity" : "Jane Wilson",
"powers" : [
"Million tonne punch",
"Damage resistance",
"Superhuman reflexes"
]
},
{
"name" : "Eternal Flame",
"age" : 1000000,
"secretIdentity" : "Unknown",
"powers" : [
"Immortality",
"Heat Immunity",
"Inferno",
"Teleportation",
"Interdimensional travel"
]
}
]
}

结果如下:https://mdn.github.io/learning-area/javascript/oojs/json/heroes-finished-json-parse.html

Our supersheet的更多相关文章

随机推荐

  1. 删除string类型字符串中指定字符串段

    1.实现背景 在插入list行时用邮件的MessageID给对应行命名. 在回复全部邮件时,收件人变为之前收件人中出去“自己”同时加入之前发件人,抄送人还是之前的抄送人,密送人不用管,直接不用带. 在 ...

  2. Linux驱动模块的Makefile分析【转】

    本文转载自:http://blog.chinaunix.net/uid-29307109-id-3993784.html 1. 获取内核版本 当设备驱动需要同时支持不同版本内核时,在编译阶段,内核模块 ...

  3. POJ 2029 (二维树状数组)题解

    思路: 大力出奇迹,先用二维树状数组存,然后暴力枚举 算某个矩形区域的值的示意图如下,代码在下面慢慢找... 代码: #include<cstdio> #include<map> ...

  4. Wannafly14挑战赛 C(tarjan缩点)题解

    题目:牛客题目链接 思路:这道题有点像这道题 先缩点,缩完之后判断一下整个强连通分量入度是不是0,如果是的话向ans压入该强连通分量最小的那个值.最后排序一下ans输出就行了. 思路一下就想到了,就是 ...

  5. [Redis] - 高并发下Redis缓存穿透解决

    高并发情况下,可能都要访问数据库,因为同时访问的方法,这时需要加入同步锁,当其中一个缓存获取后,其它的就要通过缓存获取数据. 方法一: 在方法上加上同步锁 synchronized //加同步锁,解决 ...

  6. 【异常记录(八)】 This operation requires IIS integrated pipeline mode.

    突然提示这个Error: Server Error in '/' Application. This operation requires IIS integrated pipeline mode. ...

  7. yii2 高级版新建一个应用(api应用为例子)

    先在项目的根目录下复制一份 backend 为 api: cp backend/ api -r 拷贝 api 环境 cp -a environments/dev/frontend environmen ...

  8. IDEA Spring-boot-devTools 无效解决办法二

    转载地址:Intellij IDEA 使用Spring-boot-devTools无效解决办法 相信大部分使用Intellij的同学都会遇到这个问题,即使项目使用了spring-boot-devtoo ...

  9. zookeeper篇-如何修改源码

    提一个问题先 zxid有64位,分成两部分: 高32位是Leader的epoch:选举时钟,每次选出新的Leader,epoch累加1 低32位是在这轮epoch内的事务id:对于用户的每一次更新操作 ...

  10. 简说Spring事务

    一.事务定义: 事务指逻辑上的一组操作,这组操作要么全部成功,要么全部失败. 二.事务的特性: 1. 原子性 - 指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生. 2. 一致性 ...