在学习w3school的javascript,一些自己不是很理解的地方记录下来
1.document.write();
按我的理解,document应该为HTML Dom中的一个对象,可以调用一些方法,而write为该方法w3c说您只能在 HTML 输出中使用 document.write,如果页面加载完毕再执行write方法的话会覆盖原页面
再者js的代码可以再body里写,嵌入式的写法
2.一个方法isNaN()
if(x==""||isNaN(x))
{
alert("Not Numeric");
}
isNaNa()可以直接用?
3.ECMA-262 是 JavaScript 标准的官方名称。
4.关于书写位置
HTML 中的脚本必须位于 <script> 与 </script> 标签之间。
脚本可被放置在 HTML 页面的 <body> 和 <head> 部分中。
有时候可以不用谢<script>中的type="text/javascript"?
5.关于4的一个解答
那些老旧的实例可能会在 <script> 标签中使用 type="text/javascript"。现在已经不必这样做了。JavaScript 是所有现代浏览器以及 HTML5 中的默认脚本语言。
6.JavaScript 能够直接写入 HTML 输出流中
按我理解的输出流,指的是HTML页面加载时候的加载
7.js的书写位置,官方给的建议是
通常的做法是把函数放入 <head> 部分中,或者放在页面底部。这样就可以把它们安置到同一处位置,不会干扰页面的内容。
8.方法
某个对象.innerHTML
9.onclick事件是写在引号里的,比如<button type="button" οnclick="myFunction()">点击这里</button>
10.我们把 JavaScript 放到了页面代码的底部,这样就可以确保在 <p> 元素创建之后再执行脚本。
11.如何外链一个js文件
例如,<script type="text/javascript" src="/js/myScript.js"></script>
需要在注意的是外部脚本不能包含 <script> 标签
而外链script需要些type?
12.关于分号的作用
分号用于分隔 JavaScript 语句。
通常我们在每条可执行的语句结尾添加分号。
使用分号的另一用处是在一行中编写多条语句。
提示:您也可能看到不带有分号的案例。
在 JavaScript 中,用分号来结束语句是可选的。
13.javascript的执行顺序:浏览器会按照编写顺序来执行每条语句
14.什么是javascript代码块
块由左花括号开始,由右花括号结束。
块的作用是使语句序列一起执行。
JavaScript 函数是将语句组合在块中的典型例子。15.空格
JavaScript 会忽略多余的空格
16.您可以在文本字符串中使用反斜杠对代码行进行换行
提示:JavaScript 是脚本语言。浏览器会在读取代码时,逐行地执行脚本代码。而对于传统编程来说,会在执行前对所有代码进行编译。
JavaScript 语句和 JavaScript 变量都对大小写敏感。
17.对于声明未赋值的变量,其值是undefined
例,var name;
18.js的数据类型
字符串、数字、布尔、数组、对象、Null、Undefined
数组:
var cars=new Array();
cars[0]="Audi";
cars[1]="BMW";
cars[2]="Volvo";
var cars=new Array("Audi","BMW","Volvo");
var cars=["Audi","BMW","Volvo"];
对象,我理解为Json
var person={firstname:"Bill", lastname:"Gates", id:5566};
var person={
firstname : "Bill",
lastname : "Gates",
id : 5566
};
name=person.lastname;
name=person["lastname"];<pre name="code" class="javascript">
undefined和null
Undefined 这个值表示变量不含有值。
可以通过将变量的值设置为 null 来清空变量。
声明变量类型var carname=new String;
var x= new Number;
var y= new Boolean;
var cars= new Array;
var person= new Object;
JavaScript 变量均为对象。当您声明一个变量时,就创建了一个新的对象。
19.JavaScript 中的所有事物都是对象:字符串、数字、数组、日期,等等。
在 JavaScript 中,对象是拥有属性和方法的数据。
js中的对象,或者说变量,都拥有属性和内建方法
比如
<pre name="code" class="javascript">txt.length=5
txt.indexOf()
txt.replace()
txt.search()
将字符串转化为大写的方法
var message="Hello world!";
var x=message.toUpperCase();
20.局部变量和全局变量
全局变量
在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它。
局部变量
在 JavaScript 函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它。(该变量的作用域是局部的)。
您可以在不同的函数中使用名称相同的局部变量,因为只有声明过该变量的函数才能识别出该变量。
只要函数运行完毕,本地变量就会被删除。
向未声明的javascript变量来分配值如果您把值赋给尚未声明的变量,该变量将被自动作为全局变量声明。
21.逻辑判断
JavaScript 还包含了基于某些条件对变量进行赋值的条件运算符。
reeting=(visitor=="PRES")?"Dear President ":"Dear ";
22.循环
JavaScript 支持不同类型的循环:
- for - 循环代码块一定的次数
- for/in - 循环遍历对象的属性
- while - 当指定的条件为 true 时循环指定的代码块
- do/while - 同样当指定的条件为 true 时循环指定的代码块
var person={fname:"John",lname:"Doe",age:25};
for (x in person)
{
txt=txt + person[x];
}
23.比较
===全等(值和类型)
24.tyr catch 捕获异常
<!DOCTYPE html>
<html>
<head>
<script>
var txt="";
function message()
{
try
{
adddlert("Welcome guest!");
}
catch(err)
{
txt="There was an error on this page.\n\n";
txt+="Error description: " + err.message + "\n\n";
txt+="Click OK to continue.\n\n";
alert(txt);
}
}
</script>
</head>
<body>
<input type="button" value="View message" οnclick="message()">
</body>
</html>
try catch throw
<!DOCTYPE html>
<html>
<body>
<script>
function myFunction()
{
try
{
var x=document.getElementById("demo").value;
if(x=="") throw "值为空";
if(isNaN(x)) throw "不是数字";
if(x>10) throw "太大";
if(x<5) throw "太小";
}
catch(err)
{
var y=document.getElementById("mess");
y.innerHTML="错误:" + err + "。";
}
}
</script>
<h1>我的第一个 JavaScript 程序</h1>
<p>请输入 5 到 10 之间的数字:</p>
<input id="demo" type="text">
<button type="button" οnclick="myFunction()">测试输入值</button>
<p id="mess"></p>
</body>
</html>
25. js的with用法
with 语句可以方便地用来引用某个特定对象中已有的属性,但是不能用来给对象添加属性。要给对象创建新的属性,必须明确地引用该对象。
26.js的toString()方法
可以将其他类型数据转化为String
27.将Wed Jan 15 00:00:00 CST 2014"; 怎样把这个转化成yyyy-MM-dd HH:mm:ss类型,诸如此类
CST是美国中央时区的缩写。在部分unix操作系统版本里,有时也会代表China Standard Time,所以有时候会造成混淆
GMT 就是格林威治标准时间的英文缩写(Greenwich Mean Time 格林尼治标准时间).
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class demo {
public static void main(String[] args) {
String str = "Wed Jul 02 16:00:20 CST 2014";
Date date = parse(str, "EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dd = format.format(date);
System.out.println("dd>>>> " + dd);
}
public static Date parse(String str, String pattern, Locale locale) {
if (str == null || pattern == null) {
return null;
}
try {
return new SimpleDateFormat(pattern, locale).parse(str);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
public static String format(Date date, String pattern, Locale locale) {
if (date == null || pattern == null) {
return null;
}
return new SimpleDateFormat(pattern, locale).format(date);
}
}
28.将中国标准时间转换成标准格式的方法
Thu Aug 22 2013 15:12:00 GMT+0800 (中国标准时间)
function formatTen(num) {
return num > 9 ? (num + "") : ("0" + num);
}
function formatDate(date) {
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
var hour = date.getHours();
var minute = date.getMinutes();
var second = date.getSeconds();
return year + "-" + formatTen(month) + "-" + formatTen(day);
}
29.将GMT时间转换问题(Mon Feb 13 08:00:00 GMT+08:00 2012)
Mon Feb 13 08:00:00 GMT+08:00 2012 可能还会有其他的格式类似 Sun Sep 02 2012 08:00:00 GMT+08:00 只是顺序改变而已。
第一种实现方法:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
/**
*
* @author yaohucaizi
*/
public class DateFormat {
public static void main(String[] args) throws ParseException {
String s = "Mon Feb 13 08:00:00 GMT+08:00 2012";
// String s = "Sun Sep 02 2012 08:00:00 GMT+08:00";
SimpleDateFormat sf = new SimpleDateFormat("EEE MMM dd hh:mm:ss z yyyy", Locale.ENGLISH);
// SimpleDateFormat sf = new SimpleDateFormat("EEE MMM dd yyyy hh:mm:ss z", Locale.ENGLISH);
Date date = sf.parse(s);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String result = sdf.format(date);
System.out.println(result);
}
}
第二种方法:
首先将GMT日期转换成long型毫秒数然后再进一步的转换,看代码:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
/**
*
* @author yaohucaizi
*/
public class DateFormat {
public static final String SOURCE = "Wed Feb 13 08:00:00 +0800 2012";
public static void main(String[] args) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", new Locale("ENGLISH", "CHINA"));
Date myDate = sdf.parse(SOURCE);
System.out.println(myDate);
sdf.applyPattern("EEE MMM dd HH:mm:ss Z yyyy");
System.out.println(sdf.format(myDate));
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", new Locale("CHINESE", "CHINA"));
System.out.println(sdf2.format(myDate));
sdf2.applyPattern("yyyy年MM月dd日 HH时mm分ss秒");
System.out.println(sdf2.format(myDate));
long miliSeconds = myDate.getTime();
System.out.println("自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象经过的毫秒数为:" + miliSeconds + "毫秒");
}
}
输出结果为:
- Mon Feb 13 08:00:00 GMT+08:00 2012
- Mon Feb 13 08:00:00 +0800 2012
- 2012-02-13 08:00:00
- 2012年02月13日 08时00分00秒
- 自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象经过的毫秒数为:1329091200000毫秒
GMT(Greenwich Mean Time)是格林尼治平时:
由于地球轨道并非圆形,其运行速度又随着地球与太阳的距离改变而出现变化,因此视太阳时欠缺均匀性。视太阳日的长度同时亦受到地球自转轴相对轨道面的倾斜度所影响。为着要纠正上述的不均匀性,天文学家计算地球非圆形轨迹与极轴倾斜对视太阳时的效应。平太阳时就是指经修订后的视太阳时。在格林尼治子午线上的 平太阳时称为世界时(UTC),又叫格林尼治平时(GMT)。