复习上一节的节点操作,append添加子节点,而且子节点在最后一个位置,cloneNode(),克隆节点,括号里面可以加参数,如果是true则是深克隆(克隆当前节点及其子节点),如果是false则是浅克隆,只可能当前选中的节点;parentNode父节点,给我的父节点增加子节点其实相当于给我增加了一个兄弟节。window.onload是入口函数,代表页面加载完毕之后执行(一个页面只能有一个window.onload,因为即使有多个,后面的也会覆盖前面的,导致前面的不生效)。需要注意的是添加元素时我们有时候使用append(),有时候使用appendChild(),他们两个是有点区别的,前者是jq里的写法,后者是js里的写法。
<head> <meta charset="UTF-8"> <title>01节点操作</title> <script> window.onload=function(){ var demo=document.getElementById("demo"); var btn=document.getElementsByTagName("button")[0]; btn.onclick=function(){ //创建标签 var newLi=document.createElement("li"); newLi.innerHTML="测试创建节点" demo.appendChild(newLi); demo.parentNode.appendChild(demo.cloneNode(true)); } } </script></head><body><button>点击</button><ul id="demo"></ul></body>
节点的属性操作中我们常用的是获取属性,设置属性,删除属性,分别使用以下方法:
getAttribute("属性名") 根据属性名获取属性值
setAttribute("属性名","属性值") 给节点的某个属性设置属性值
removeAttribute("属性名") 删除节点的某个属性
<body><div id="demo" class="test" title="测试">测试</div></body><script> var demo=document.getElementById("demo"); console.log(demo.getAttribute("class"));//获取属性 demo.setAttribute("class","show"); //设置节点 demo.removeAttribute("title"); //删除节点</script>
写的还有另外一个动态生成小圆点的示例,不再这里贴代码了,感兴趣的可以到文末代码地址中看。需要指出一点的是,我们好多时候写前端,都是先把基本的样式写好,某些需要动态生成,或通过后台取数据的再抽取出来,放在js里面,不要一上来就把想着全写出来,可能会有点吃力。
<head> <meta charset="UTF-8"> <title>04发微博</title> <style> *{ margin: 0; padding: 0; } ul{ list-style-type: none; } .box{ width: 600px; margin: 100px auto; border:1px solid #ccc; padding: 20px; height: auto; } textarea{ width: 450px; resize: none; /*固定使其不可拖拉*/ } .box li{ line-height: 30px; border-bottom: 1px dashed #ccc; padding-left: 80px; width: 450px; } .box ul a{ float: right; } </style> <script> window.onload=function(){ var btn=document.getElementsByTagName("button")[0]; var txt=document.getElementsByTagName("textarea")[0]; //创建ul并追加 var ulEle=document.createElement("ul"); btn.parentNode.appendChild(ulEle); btn.onclick=function(){ if(txt.value==""){ alert("内容不能为空"); return; //停止代码执行 } //创建li var liEle=document.createElement("li"); liEle.innerHTML=txt.value+"<a href='javascript:;'>删除</a>"; txt.value=""; //清空 //判断有无li,把新添加的li放在最前面 var lis=ulEle.children; if(lis.length==0){ ulEle.appendChild(liEle) }else{ ulEle.insertBefore(liEle,lis[0]); } //点击删除按钮时进行删除 var as=document.getElementsByTagName("ul")[0].getElementsByTagName("a"); for(var i=0;i<as.length;i++){ as[i].onclick=function(){ ulEle.removeChild(this.parentNode); //从ul中移除当前的li } } } } </script></head><body><div class="box"> 微博发布:<textarea id="" name="" cols="40" rows="10" ></textarea><button>发布</button> <!--<ul>--> <!--<li>合法你考虑到发交话费拉克丝发挥到了开始<a href="javascript:;">删除</a></li>--> <!--</ul>--></div></body>
resize: none可以设置textarea不可拖拉,textarea这里是双标签,有开始标签和结束标签,不能写成单标签,而且上面这个我就是先把样式写好,再把ul注释掉从js中动态生成的。
Date是js中的内置对象,使用它可以创建日期,获取当前的时间。var date=new Date(); 可以创建一个日期对象。
var date=new Date(); console.log(date); //Wed Aug 30 2017 13:26:51 GMT+0800 (中国标准时间) console.log(date.getTime()); //1504070843457 从1970年至现在的毫秒数 console.log(date.valueOf()); //1504070843457 跟上面的一样,但是没有上面的常用 //直接使用的 console.log(Date.now()); //1504070966613 console.log(+new Date()); //1504070966613 console.log(typeof (+"123456")); //number
js中,在某个值前使用"+"可以将这个变量转换成Number类型,如果转换失败,将得到NaN。所以上面的+new Date()跟其它值一样。
日期函数中常用的方法如下:
方法 | 作用 |
---|---|
getFullYear() | 获取年(所有浏览器均支持) |
getYear() | 获取年(从ECMAscriptv3开始停止使用了) 所以慎用! |
getMonth() | 获取月0-11 |
getDate() | 获取日1-31 |
getDay() | 获取星期0-6(跟上面获取日的要分清) |
getHours() | 获取小时 (获取时分秒单词需要用复数) |
getMinutes() | 获取分钟 |
getSeconds() | 获取秒 |
getMilliseconds() | 获取毫秒 |
getTime() | 获取从1970年至今的累计毫秒数 |
<script> var date=new Date(); console.log(date.getFullYear()); //2017 console.log(date.getYear()); //117 console.log(date.getMonth()); //7 console.log(date.getDate()); //30 console.log(date.getDay()) //3 console.log(date.getHours()) //14 console.log(date.getMinutes()) //5 console.log(date.getSeconds()) //16 console.log(date.getMilliseconds()) //728</script>
下面这一个是根据日历函数生成一个日历,其中定义一个数组来装星期的思路不错。
<head> <meta charset="UTF-8"> <title>06日历</title> <style> .box{ width: 150px; height: 180px; margin: 100px auto; background-color: #336699; text-align: center; } .box p{ line-height: 60px; color: #FFFFFF; font-size: 12px; } .box span{ display: block; width: 75px; height: 75px; background-color:#9ACD32 ; margin: 0 auto; line-height: 75px; font-size: 50px; color: #000000; } </style> <script> window.onload=function(){ var box=document.getElementById("box"); var arr=["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]; var childrens=box.children; var date=new Date(); childrens[0].innerHTML=date.getFullYear()+"年"+(date.getMonth()+1)+"月"+date.getDate()+"日"+ arr[date.getDay()]; childrens[1].innerHTML=date.getDate(); } </script></head><body> <div class="box" id="box"> <p>432431</p> <span>3</span> </div></body>
有时我们自己需要自己指定时间,那么在创建时间时传一个时间参数即可
var date=new Date("2016/09/11"); console.log(date.getFullYear());
所以new Date()里面如果有参数,生成指定日期,如果没有参数,生成当前日期。
通过设定定时器可以让某个函数或动作持续的执行下去,定时器通过setInterval()函数来设定。window.setInterval("函数名","时间间隔");每隔指定的时间间隔去执行函数。下面这几种写法都是可以的:
window.setInterval(fun,1000); 其中fun是已经定义好的函数名
window.setInterval(function(){//函数体},1000); 下面这两种会报错
window.setInterval(fun(),1000);
window.setInterval("fun()",1000);网上有说这种方式也可以的,但是我试了试不行(不知道是不是姿势不对)
<script> window.onload=function (){ var demo=document.getElementById("demo"); var num=1; function myInterval(){ num++; demo.innerHTML=num; } window.setInterval(myInterval,1000); } </script>
下面的例子是一个活动的倒计时,定时器每秒执行一次,根据截至时间和当前时间算出中间相隔的毫秒数(getTime()获取1970年到指定时间的毫秒数),再利用毫秒数计算运算转换。
<style> span{ display: block; font-size: 30px; color: red; text-align: center; } </style> <script> window.onload=function(){ var endTime=new Date("2017-08-31 24:00:00"); var spanEle=document.getElementsByTagName("span")[0]; setInterval(clock,1000); //开启定时器,每秒执行一次 function clock(){ var startTime=new Date(); var minSecond=endTime.getTime()-startTime.getTime(); //得到距离截止时间还有多少毫秒 var second=parseInt(minSecond/1000); //得到秒数 var d=parseInt(second/24/3600); //得到天数 var h=parseInt(second/3600%24); //得到小时 var m=parseInt(second/60%60); //得到分钟 var s=parseInt(second%60); //得到秒数 d<10?d="0"+d:d; h<10?h="0"+h:h; m<10?m="0"+m:m; s<10?s="0"+s:s; spanEle.innerHTML="距离活动结束还有"+d+"天"+h+"小时"+m+"分钟"+s+"秒"; } } </script></head><body><div> <span> 5634298 </span></div></body>
代码地址:https://git.oschina.net/catchu/web-study
TML文本是由 HTML命令组成的描述性文本,HTML 命令可以说明文字、 图形、动画、声音、表格、链接等。 HTML的结构包括头部 (Head)、主体 (Body) 两大部分。下面是什么是html内容,希望对您有所帮助。
HTML(Hyper Text Mark-up Language )即超文本标记语言,是 WWW 的描述语言,由 Tim Berners-lee提出。设计 HTML 语言的目的是为了能把存放在一台电脑中的文本或图形与另一台电脑中的文本或图形方便地联系在一起,形成有机的整体,人们不用考虑具体信息是在当前电脑上还是在网络的其它电脑上。这样,你只要使用鼠标在某一文档中点取一个图标,Internet就会马上转到与此图标相关的内容上去,而这些信息可能存放在网络的另一台电脑中。
HTML文本是由 HTML命令组成的描述性文本,HTML 命令可以说明文字、 图形、动画、声音、表格、链接等。 HTML的结构包括头部 (Head)、主体 (Body) 两大部分。头部描述浏览器所需的信息,主体包含所要说明的具体内容。
html是什么文件
HTML就是超文件标示语言(HyperText Markup Language)。主要是在浏览器中显示一份文件的内容。它本身并非程式设计,只不过是标示(Mark-up),用来强调及组织一般性的文字。HTML是由一些标记(tags)所构成,每个标记对浏览器下一个特定的指令,这些指令会告诉浏览器如何显示文件的内容。
编辑HTML不需要多么高级的软体配备,你只要有『记事本』这项软体就可以了。但记得,HTML文件的副档名有些奇怪,你必须设定为 .htm 或是.html 才行。
例如: index.htm是一个合法的HTML档名,但index.txt就不是了。你可能听过一些HTML的编辑程式如:HotDog 、CutrHTML ....等。对初学者而言,使用这些工具并不太好。虽然它们的设计目的是帮助你更容易使用HTML来工作。但不幸的是,其中有许多会将HTML的代码隐览起来,造成学习上的困难。
HTML由来
万维网上的一个超媒体文档称之为一个页面(外语:page)。作为一个组织或者个人在万维网上放置开始点的页面称为主页(外语:Homepage)或首页,主页中通常包括有指向其他相关页面或其他节点的指针(超级链接),所谓超级链接,就是一种统一资源定位器(Uniform Resource Locator,外语缩写:URL)指针,通过激活(点击)它,可使浏览器方便地获取新的网页。这也是HTML获得广泛应用的最重要的原因之一。
在逻辑上将视为一个整体的一系列页面的有机集合称为网站(Website或Site)。超级文本标记语言(英文缩写:HTML)是为“网页创建和其它可在网页浏览器中看到的信息”设计的一种标记语言。
网页的本质就是超级文本标记语言,通过结合使用其他的Web技术(如:脚本语言、公共网关接口、组件等),可以创造出功能强大的网页。因而,超级文本标记语言是万维网(Web)编程的基础,也就是说万维网是建立在超文本基础之上的。超级文本标记语言之所以称为超文本标记语言,是因为文本中包含了所谓“超级链接”点。
HTML特点
HTML(Hyper Text Mark-up Language)即超文本标记语言或超文本链接标示语言,是目前网络上应用最为广泛的语言,也是构成网页文档的主要语言。HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字、图形、动画、声音、表格、链接等。HTML的结构包括头部(Head)、主体(Body)两大部分,其中头部描述浏览器所需的信息,而主体则包含所要说明的具体内容。
HTML文档制作不是很复杂,且功能强大,支持不同数据格式的文件镶入,这也是WWW盛行的原因之一,其主要特点如下:
1、 简易性,HTML版本升级采用超集方式,从而更加灵活方便。
2、可扩展性,HTML语言的广泛应用带来了加强功能,增加标识符等要求,HTML采取子类元素的方式,为系统扩展带来保证。
3、 平台无关性。虽然PC机大行其道,但使用MAC等其他机器的大有人在,HTML可以使用在广泛的平台上.
indle饭网报道:
Kindle,这个词意为点燃火焰,暗喻着书籍和智慧所带来的兴奋,被Amazon(亚马逊)用来命名其旗下的一系列电子书阅读器产品。Kindle阅读器可以让用户通过无线网络在Amazon(亚马逊)购买电子书籍,也可以将自行下载电子书、订阅的新闻源等电子媒体推送到此设备中。因为这一系列产品中大部分使用 E Ink 十六级灰度电子纸显示技术,能在最小化电源消耗的情况下提供类似纸张的阅读体验。那么Kindle系列产品到底有多少种呢?又有什么区别?该怎么样选择合适自己的设备呢?
截至目前位为止(2014.4.1)Kindle系列产品已经走过了六代,除了后来亚马逊推出的LCD平板电脑外,它们的共同点就是都使用了E Ink电子纸显示技术。在选择合适自己的Kindle阅读器之前不妨跟着我先简要的了解一下Kindle的发展史吧:
一、Kindle系列阅读器的发展史
1、第一代 Kindle(Kindle)
Kindle– 这是Amazon的第一代Kindle阅读器。于2007年11月19日推出,售价399美元,不过此款产品未在美国以外的地区销售。配备了六英寸(对角线)四级灰度显示屏,内置 250 MB 存储空间,还是唯一一款能通过SD卡槽扩展内置存储容量的型号。
2、第二代 Kindle(Kindle 2)
Kindle 2– 于2009年2月9日发布,在2009年2月23日发售,售价为299美元,于2009年10月22日降价为259美元,又于2010年6月21日降价为189美元。配备6英吋(对角线)的16级灰度显示屏,Kindle 2内置2GB容量,其中1.4GB可供用户使用(无SD卡插槽)。相比第一代Kindle,Kindle2有了以下新改进:
更长的电池使用时间
页面刷新速度比第一代快20%
语音朗读功能
支持PDF文件
更薄的机身(9.1mm厚)
Kindle 2 国际版– 于2009年10月7日发布,在2009年10月19日开始面向全球超过100个国家发售。发布时的售价为279美元,随后于10月22日将售价调低为259美元,又于2010年6月21日降价为189美元。配置同Kindle 2。
Kindle DX– 于2009年5月6发布,在2009年6月10日发售,售价为489美元。配备9.7英吋(1200 x 824分辨率)的显示屏,配备加速规,内置4 GB容量(用户可用3.3 GB,无SD卡插槽),并且有了以下改进:
长达两周的电池使用时间(离线)或长达一周的使用时间(连接网络的情况下)
内置立体声扬声器
支持PDF文件
Kindle DX 国际版– 于2010年1月19日开始全球发售,售价为489美元,后因发售Kindle DX Graphite将其调整为359美元。配置同Kindle DX。
Kindle DX Graphite– 于2010年7月1日发售,售价为379美元,和白色DX不同的是颜色变成了石墨色。对比度比原来的Kindle DX要高50%。
3、第三代 Kindle(Kindle 3)
Kindle Keyboard WiFi 与 WiFi/3G 版– 于2010年7月28日发布,其中备有Wi-Fi版Kindle Keyboard售价为189美元,同时备有3G和Wi-Fi功能的Kindle Keyboard售价为189美元(有经典白和石墨黑两种颜色可选)。
相比Kindle 2机身短了和窄了0.5英吋,同样采用6英吋E Ink屏幕但总面积减少了21%,重量减少了17%,内容扩充到了4GB。在外观尺寸、按键设置布局、屏幕等多方面也均进行了更新,可谓是一次全面的升级换代。相对于之前Kindle支持内容格式的诸多限制,Kindle Keyboard进一步扩大了支持内容的格式。Kindle Keyboard支持无文档保护的Word文本、PDF、HTML、TXT等文本格式,以及JPEG、GIF和PNG等主流图片格式。且Kindle原系统支持中文繁体和简体。
4、第四代 Kindle(Kindle 4)
Kindle 4(即廉价版Kindle)– 于2011年9月28日推出,带广告版本售价79美元,不带广告版售价109美元,2G内存(无SD卡插槽)。此款Kindle摒弃了全键盘设计,但备有四个实体按键及一个五向按键。跟上个版本一样,配备了6英寸电子墨水屏,但是机身尺寸更小、重量更轻。
Kindle Touch WiFi 与 WiFi/3G 版– 于2011年9月28日和廉价版Kindle同时推出,分为备有Wi-Fi和同时备有Wi-Fi及3G功能的版本,颜色为灰色。与廉价版Kindle的最大区别为带有红外线触摸屏功能。该产品同样也有价格更便宜的带广告版本。
5、第五代 Kindle(Kindle 5)
Kindle 5– 于2012年9月6日的发布,带广告版售价69美元,不带广告版售价89美元,颜色为黑色,2G内存(无SD卡插槽)。提供了新的英文字体,更锐利的显示效果,并且提高了15%的翻页速度。
6、Kindle Paperwhite(KPW)
Kindle Paperwhite– 于2012年9月6日发布,同样分为备有 Wi-Fi 和同时备有 Wi-Fi 及 3G 功能的版本,厚度为 9.1mm,重量仅为 7.5 盎司(约 213 克),贝索斯在发布会上形容:“比杂志还要薄,比平装本还要轻”。
KPW 摒弃除电源按钮外的所有实体键,首次采用了电容式触摸屏,而非上一代 Kindle Touch 所采用的红外线触摸屏,屏幕分辨率高达 1024×768,像素密度达到了 212 PPI。相比上一版有了如下改进:
首次采用了电容式触摸屏
首次采用了前发光技术(内置的四颗LED灯提供光源)
续航能力达到了8周(关闭wifi情况下每天使用半小时)
KPW 于2013年6月7日正式面向中国发售,在亚马逊中国商店与苏宁电器上架销售,首发售价 849 人民币。
7、Kindle Paperwhite 2(KPW 2)
第二代 Kindle PaperWhite- 于2013年9月3日发布。相比第一代 Paperwhite,第二代 Paperwhite 使用了对比度更高的 Carta 电子墨水显示技术,改进了照明,更好的处理器使速度提升了 25%,升级的触控技术使传感器密度提升了 19%,以便更精确地响应手指的滑动以及全新的翻页操作。屏幕分辨率则上初代 Paperwhite 一样为 212 PPI。
KPW2 于2013年12月10日在中国亚马逊正式销售,售价为 899 人民币。
8、Kindle Voyage
2014年9月18日,马逊官网突然发布了全新的 Kindle 电子书阅读器——Kindle Voyage。和上代Paperwhite产品不同,Kindle Voyage 采用更加轻薄,厚度仅为 7.6mm,重量为 180g。同时,Kindle Voyage这一次还增加了PagePress 压敏式翻页键。
亚马逊中国官网已经开启了 Kindle Voyage 的预售工作,Kindle Voyage 在中国销售的版本提供“珍藏限量版”,采用礼盒包装,套装内除了 Kindle 机器和数据线以外,还带有一个真皮保护套、一个电源适配器和一张 100 元的 Kindle 电子书劵,官方售价1999元,预计12月发货,这也是Kindle系列产品首次在大陆地区首批发售。
9、新 Kindle(Kindle 6)
与 Kindle Voyage 同时发布还包括另一款全新 Kindle 电子书阅读器,定位于学生人群,售价 499 元。新 Kindle 可视为 Kindle PaperWhite 的低配版,触摸屏,167 ppi,没有搭载阅读灯,内置 4GB 机身存储,机身厚度 10.2 mm,重 191g。
为了强调 Kindle 的学习工具属性,新 Kindle 内置了《现代汉语词典》、《现代英汉词典》等多本词典工具书,“生词本”和选中翻译功能也能够为学生提供便利。
* Kindle 阅读器历史演变 GIF 动画:
二、Kindle其他形式产品
1、LCD版Kindle
Amazon分别于2011年9月28日和2012年9月6日发布了Kindle Fire及Kindle Fire HD,和之前的Kindle产品相比,并没有使用电子纸屏幕,而改用一般平板电脑常用的IPS TFT屏幕,支持觸屏操作及彩色显示。换句话说,这两款产品和iPad、Android平板没有什么区别,只是操作系统经由亚马逊特别订制,内置了亚马逊电子商店、媒体电影、在线电视和Kindle系列的在线电子书等服务而已。
2、Kindle应用程序(App版Kindle)
Amazon首次于2009年3月3日在苹果App Store发行了一款面向iPhone和iPod touch的名为Kindle for iPhone的免费应用程序,用户可以通过自己的iPhone或iPod touch上浏览Kindle的内容。随后开始全面覆盖主流系统平台,目前支持平台如下:
iOS(所有iPhone、iPad适用)
Mac OS(所有Mac系统适用)
Android(所有Android手机及平板适用)
Windows Phone(所有WP手机及平板适用)
BlackBerry(所有黑莓手机适用)
Windows XP、7、8(指定微软桌面系统适用)
三、Kindle系列阅读器的主要区别
看到这里,对Amazon(亚马逊)的全线Kindle产品应该有个概念了吧!但是如何选择购买Kindle?哪个阅读体验更好?怎么判断什么型号适合自己?要入手的话要怎样进行选择?在哪里购买比较好?下面先把市面流行——也就是大家常见的Kindle阅读器可以进行一个简单的归类:
1、Kindle3– 全键盘、6英吋屏幕、无背光、物理按键操作。
2、Kindle4、Kindle5– 6英吋屏幕、无背光、物理按键操作。
3、Kindle Touch、Kindle Paperwhite– 6英吋屏幕、触屏操作。其中KPW有背光。
4、Kindle DX、Kindle DXG– 全键盘、9.7英吋屏幕、无背光。
5、Kindle Fire、Kindle Fire HD– 平板电脑。
6、Kindle App– 依附Android/Windows Phone/BlackBerry/Windows XP,7,8/Mac平台。
四、按需选择适合自己的Kindle阅读器
结合上面Kindle的各项指标,你就可以根据自己的喜好按照下面的分析来决定选择哪一款了:
1、只有单纯的阅读需求并很少在夜间读书,请选择Kindle 4或Kindle 5。
Kindle 4和Kindle5的区别为5是4的升级版,外观上5为黑色4为灰色,5翻页速度稍微快一点,但是区别不大,因为这两款Kindle都没有背光功能,所以再弱光或夜晚就不能阅读了。不过可以再淘宝上搜索“kindle 阅读灯”花20元左右为之配一个LED阅读灯配件。
2、除了阅读还有做笔记的需求,可选择有全键盘的Kindle 3。
不过做笔记还是建议随身带笔和纸,或者用其他电子设备如手机、平板中的云笔记本应用来做笔记。
3、有夜晚读书的需求,请选择Kindle Paperwhite。
虽说Kindle Paperwhite带有触屏功能,但是体验却并不比一般的平板电脑体验好,反应速度稍微差那么一点点,甚至一些从Kindle 5以前过度来的用户都认为手感不如物理按键。不过相比KPW其他的功能完全可以忽略这一点。
4、有查词典需求,请选择有触控功能的Kindle Touch或Kindle Paperwhite。
如果时常查字典,那么在选词方面有触屏功能的Kindle长按选词翻译这一点就比物理按键便捷的多了。
5、有看漫画、学术文档等PDF的需求,请选择Kindle DX或Kindle DXG。
Kindle DX和Kindle DXG是Amazon推出的唯一一类大屏幕阅读器,因为目前大部分PDF都是按照A4版面设计,用这种9.7英吋屏幕阅读会比6英吋的屏幕舒服的多。不过价格方面会比其他小屏幕Kindle贵一些,目前Kindle DXG淘宝上价格约为1300左右,不要还要小心翻新机哦。
6、如果你没有购买以上Kindle产品的预算,也可以免费下载APP版Kindle到它所支持的设备里。
Kindle饭微信号:kindle_fan 永久免费无限制的Kindle微信推送神器!
*请认真填写需求信息,我们会在24小时内与您取得联系。