javascript学习积累

在学习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 时循环指定的代码块
JavaScript for/in 语句循环遍历对象的属性:

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 + "毫秒");
    }
} 

输出结果为:

  1.         Mon Feb 13 08:00:00 GMT+08:00 2012
  2.         Mon Feb 13 08:00:00 +0800 2012
  3.         2012-02-13 08:00:00
  4.         2012年02月13日 08时00分00秒
  5.         自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象经过的毫秒数为:1329091200000毫秒 

GMT(Greenwich Mean Time)是格林尼治平时:
由于地球轨道并非圆形,其运行速度又随着地球与太阳的距离改变而出现变化,因此视太阳时欠缺均匀性。视太阳日的长度同时亦受到地球自转轴相对轨道面的倾斜度所影响。为着要纠正上述的不均匀性,天文学家计算地球非圆形轨迹与极轴倾斜对视太阳时的效应。平太阳时就是指经修订后的视太阳时。在格林尼治子午线上的 平太阳时称为世界时(UTC),又叫格林尼治平时(GMT)。



















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值