javascript源自C,学好js不仅对以后做前端和SEO意义重大,对以后学习PHP的知识也是受益匪浅的。今天整理出来的都是JavaScript的基础知识。包括Js语法(变量,语句等),JS函数,JS对象,jsDOM,JS表单验证等。
1.JavaScript添加到XHTML的方法
在(X)Html中嵌入JavaScript脚本
<script type=“text/javascript”>
JavaScript代码
……
</script>
在(X)Html中链接一个外部的javaScript文件。(页面文件)
<script type=“text/javascript” src=“danger.js”></script>
将JavaScript存入单独的文件中(ajax.js)
var prjName="/MyTodoes/";
var ajaxObj;
function createAjaxObject(){
try{return new ActiveXObject("Msxml2.XMLHTTP");}catch(e){};
try{return new ActiveXObject("Microsoft.XMLHTTP");}catch(e){};
try{return new XMLHttpRequest();}catch(e){};
alert("XmlHttpRequest not supported!");
return null;
}
function $(id){
return document.getElementById(id);
}
直接编写在元素的事件属性中。
<input type="button" value="Press Me" onclick="alert('Hello World');" />
<a href="javascript: alert('hello World');">Click</a>
<input type=“button” value=“delet” onclick=“confirm('确定删除吗?');” />
2.JS变量
JS中变量的定义是用var运算符加变量名定义,JS是弱类型。定义变量时无需申明变量类型,也不一定要初始化,甚至变量无需事先定义也可使用。不过,为了语义更好
的表示,使用变量前还是要事先申明。
var test="ht",test1=90;
var test;
不能使用保留关键字做为JS变量。如:break,for,double,import,public,else,new,try,if,in,while,null,typeof,void,var
3.JavaScript数据类型
JavaScript数据类型分为:原始类型和引用类型
原始类型包括5种:
- undefined:
• 当声明的变量未初始化时,值为undefined。
• 当函数无明确返回值时,其调用结果也是undefined。
- null:
• 值为null,Null是从Undefined派生来的。因此null==undefined
• null表示不存在的对象。
- boolean:
• ture或false
- number:
• 即可表示32位整数,也可表示64位浮点数。
• Number.MAX_VALUE和Number.MIN_VALUE定义了上下限。
• Number.POSITIVE_INFINITY和Number.NEGATIVE_INFINITY Infinity表示无穷大。isFinit()较验是否无穷大。
• NaN表示非数字,它与自身不相等。一般发生在类型转换失败时,isNaN()较验是否为数字。
–string字符串
• 可用单引号或双引号声明。字符类型提供了很多丰富的方法,详看API。
4.typeof()运算符
对变量或值使用typeof()运算符将返回它的类型:
– undefined : undefined
– boolean : boolean
– number : number
– string : string
– null或引用类型:object
5.数据类型转换
//自动类型转换
var x = “10”-2;结果:8 —— 自动将”10”转为Number类型
var x=“10”+2;结果:102-------如有一个为字符串,则是连接
var s=9+2+”8“;结果:118 —— 先进行9+2结果为11,再和”8”连接
var x=“2”*”3”;结果:6 。自动将字符串转为整型
var y=“4”*”abc”;结果:NaN ——相乘如有一个为非数字NaN,则结果为非数字NaN
alert(55==‘55’);结果为true;
alert(0==false);结果为true;
===比较时,同时比较类型
alert(55==‘55’);结果为true; alert(55===‘55’);结果为false;
//toString()方法
Var num = 123;
alert(num.toString());
//parseInt()和parseFloat
var a = parseInt("1234"); //返回1234
var b = parseInt("abc"); //返回NaN
//强制类型转换有,Boolean(value)、String(value)、Number(value)
6.逻辑表达式
或运算符(||) 返回第一个值为真的操作数, 如果两个操作数的值都为假,则返回最后一个操作数。
与运算符(&&) 返回第一个值为假的运算符,如果两个操作数的值都为真,则返回最后一个操作数。
比较运算符 ==等于、===完全等于、!=或<>不等于、>大于、<小于
三元运算符 var foo = bar ? 1 : 0 如果bar=1,则foo值为1,否则foo值为0;
7.js语句(参见《javascript语句大全》)
8.js函数
<!--封装 函数 ,function定义函数-->
<script>
function img()
{
document.write( '<img src="images/logo2.png" />' )
}
<!--函数调用,-->
img();
img();
img();
img();
//同一个脚本标签,先加载调用函数,再加载定义函数
//不同的脚本标签按先后顺序加载;
</script>
js变量的作用域:局部变量与全部变量
<script>
var name= "8" ;//全局变量
function ts()
{
var name="lin";//函数内部加了var申明,此时为局部变量,只对函数ts()有作用,不加var时,由于属于全局变量,相当于第一个var申明又重新将name变量申明了一次。因此,此时的name属于全局变量。
alert(name);
}
ts();
alert(name);
</script>
<script>
img();
</script>
var str="ok";
function img(src1,w,h) //形参,可以将同一图片文件夹下名称不同的部分换成参数。
{
//形参 初始化1
//w = w ? w: 100; //三元运算符,test ? 语句1 : 语句2,当test为ture时,执行语句1,当test为false时,执行语句2.
//h = h ? h: 100;
//形参 初始化2
w = typeof(w) =='undefined' ? 100:w; //typeof() 可得数据类型,即使w的值取0,也不会=='undefined'。只有w没有任何值的时候,才会在语句成立后取默认的100.
h = typeof(h) =='undefined' ? 100:h;
//document.write('<img src="images/'+src1+'" width="'+w+'" height="'+h+'" />'); //定界符'',用+号连接变量和字符串。
return '<img src="images/'+src1+'" width="'+w+'" height="'+h+'" />'
//return 返回,有终止语句的作用相当于break,
/*document.write('<img src="images/'+src2+'" width="'+w2+'" height="'+h2+'" />');
document.write('<img src="images/'+src3+'" width="'+w3+'" height="'+h3+'" />');
img('1.png','100px','200px','11.jpg','100px','200px','3.jpg','100px','300px'); //实参 */
}
<!--调用函数中的图片。同一个script脚本标签,function的阅读顺序最后。先阅读调用img();不同的脚本标签中,则按照脚本标签的书写顺序加载程序。-->
<!--独立的 脚本标签不能写在函数定义标签function的前面。-->
<script>
img2() //此时可以不按顺序写。
function img2()
{
document.write('<img src="images/11.jpg" />')
}
</script>
<script>
alert(x); //弹出undefine;定义的阅读优先级最高。
var x = 'ok';
</script>
<script>
img('1.png',50,0); // 形参初始化1中,没写值的属性或是属性值为0的,都将采用默认属性值。
</script>
匿名函数(闭包):
<script>
//闭包
var str = 'abc';
var arr = [1,2,3]
function test(str)
{
alert(str);
}
//var s = test(3);
/*s() //弹出3,即使不写s()也会弹出数字3.因为上一句中有调用函数的语句:test(3).*/
var s = function () { test (3); }
//闭包,function(){ } 闭包可以传递参数,又不会使test()函数提前运行。
</script>
9.js对象:
原生对象
– 由JavaScript提供,独立于浏览器的对象。
– Object,Array,String,Boolean,Number,Date,RegExp...
内置对象
– 也是一种原生对象,只是在使用时不需要初始化。
– Global,Math
宿主对象
– 与浏览器有关的对象。
– BOM,DOM
自定义对象
原生对象 - Object
Object是JavaScript中所有类的父类。
Object的属性:
– constructor :指向创建对象函数的引用。
– prototype :对该对象的对象原型的引用,默认返回Object类的一个实例。
Object的方法:
– hasOwnProperty("property") :判断对象是否有指定属性。
– isPrototypeOf(object) :判断该对象是否是另一个对象的原型。
var re = new Object(); //初始化变量。
alert (Object.prototype.isPrototypeOf(re));
– propertyIsEnumerable("property") :判断指定属性是否可以用for...in语句枚举。
– toString() :返回对象的原始字符串。
– valueOf() :返回最适合该对象的原始值。
原生对象 -原始数据类型包装器类 Boolean、String、Number
原生对象-RegExp Javascript正则表达式对象 、var x=/^a{2,8}$/; 、alert(x.test("aaa"));
//创建数组对象
var a = new Array(); //定义一个数组,长度为0
a[0] = 0; //此时数组长度自动增长为1.
a[1] = 1; //此时数组长度自动增长为2.
var b = new Array(20); //定义一个数组,长度为20
var c = new Array(1,2,3,4,5); //定义一个数组,并赋值。
alert(c[2]); //输出3
alert(c.length); //取得数组长度,输出5
c[30] = 1;
alert(c.length); //取得数组长度,输出31
push('o'); //加入元素
Join("d"); //在每个元素后加入d(最后一个除外),并做元素连接
原生对象 - Date
//创建日期对象,保存当前时间。
var d = new Date();
//参数为1970/1/1到今的毫秒数。
var e = new Date(10);
//转换为1970/1/1至今的毫秒数
Date.parse("May 25, 2004“);
//转换为1970/1/1至今的毫秒数
Var x = new Date(Date.UTC(2003, 12,10));
//获得日期的年、月、日
alert(date.getYear()+" "+date.getMonth()+" "+date.getDate());
内置对象 - Global
isNaN()——判断是否是数字
isFinite()——验证是否无穷大
//将URL中允许的字符编码,解码,如空格,汉字
encodeURI(),decodeURI()
//将特殊字符进行编码解码:如斜杠,问号等。
encodeURIComponent(),decodeURIComponent()
//解释执行一段字符串
(); (“alert(‘abc’)”); == alert(‘abc’);
Var x=(“2+3”) x=5
js oops
alert(window.location);
//顶级定义中的window可以省略。如:document.write()
//页面跳转的方法:
window.location.href='http://baidu.com';
window.location.replace('http://baidu.com');
var ok = window.confirm('您真的要删除吗');
if(ok) //确定
{
alert('你点击了确定');
}else
{
alert('你点击了取消');
}
window.setInterval("t()",1000); //每隔一秒钟就会执行一次"t()"
window.setTimeOut("t()",1000); //一秒钟后,执行一次"t()"就停止。
//函数必须写在""里面,否则就会马上执行。
js DOM
传统的HTML文档顺序是:
document->html->(head,body)
一个浏览器窗口中的DOM顺序是:
window->(navigator,screen,history,location,document)
function tz(obj)
{
var val = obj.value
window.location = val;
}
//window.location 跳转
//抓取对象
//通过节点的ID值来抓取对象 只适用于文档对象
//alert(document.getElementById('test')); 返回的是一个对象 对象是没有length属性 抓取一个特定对象
//通过节点的name属性值来抓取对象 只适用于文档对象
//document.getElementsByName(); 返回的是一个集合 因为 Name属性值不像id,它可以出现多次 集合拥有length属性 即拥有多少个值 如果Name属性相同
//通过标签属性抓取 适用于闭合标签以及用于文档对象
//document.getElementsByTagName(); 返回的依然是个集合,
//当文件中出现多个form表单时.可以用document.forms[0],document.forms[1]来代替.
//表示当前所属的位置:this,all代表其下层的全部元素。parent代表父亲对象,top代表最顶端对象
//document.getElementById("表单中元素的ID号").name(或value).
//JS中的焦点顺序:document.getElementByid("表单元素").tabIndex = 1
</script>
select的value值是选中状态的那个选项
<select onchange="tz(this)">
<option value="">请选择</option>
<option value="http://baidu.com">百度</option>
<option value="http://google.com">谷歌</option>
</select>
<a href="http://baidu.com" id="test">百度</a>
<script>
document.getElementById('test').click(); //一定要写入ID节点 才能使JS查找到相应的代码
</script>
<input name="sex" type="radio" />男
<input name="sex" type="radio" />女
<script>
document.getElementsByName("sex")[0].onclick = function(){alert('ok');}
</script>-->
<div>这是第一个层</div>
<div>这是第二个层</div>
<div>这是第三个层</div>
<script>
var divs = document.getElementsByTagName('div');
alert(divs[1].innerHTML);
</script>
<p id="box">
<div name="c">这是第一个层</div>
<div name="c">这是第二个层</div>
<div name="c">这是第三个层</div>
</p>
<div name="c">这是第四层</div>
<script>
//alert(document.getElementsByTagName('div').innerHTML);
//document.getElementById('box').getElementsName("c") //这句是错误的 因为document.getElementById('box') 抓取到的是p标签 而p标签属于闭合标签,所以只能是由getElementsByTagName抓取里面的对象。
eval("alert('document.getElementById('box').getElementsTagName('div').innerHTML')"); //这句是对的
</script>
---------------------------------------------------------------------------------------------------------------------
<input type="text" id="username" value="" name="" />
<input type="button" value="点击" onclick="test()" />-->
<!--效果-->
<input type="radio" name="sex" value="man" />男
<input type="radio" name="sex" value="woman" />女
<input type="radio" name="sex" value="secret" />保密
function test()
{
//获取对象的属性
//内置属性 对象.属性
var u = document.getElementById("username");
//alert( document.getElementById("username").value );
//不是内置的属性 即自定义属性 getAttribute() setAttribute()
//获取对象的属性
u.setAttribute('abc' , 123);
//弹出abc=123
alert( u.getAttribute('abc') );
}*/
//让某个单选按钮处于选中状态-->
//特殊情况 class属性 虽然是内置的属性 但是必须用.className 抓取标签名 getElementsByTagName('必须用大写的标签名')
//下拉菜单 selected = selected document.getElementById('select').options
<script>
setSelRadio("sex","woman"); //value值变成字符串 需要加引号
function setSelRadio(name, value)
{
var jh = document.getElementsByName(name);
for(var i=0; i<jh.length; i++) //可以将该段代码优化为 for(var i=0 len=jh.length ; i<len; i++) 这样就只要计算一次len=jh.length
{
if(jh[i].value == value)
{
jh[i].checked = true;
break; //终止循环
}
}
}
</script>
<select id="s">
<option value="1">win</option>
<option value="2">MAC</option>
<option value="3">linux</option>
</select>
<script>
test("s",3);
function test(id,value)
{
var s = document.getElementById(id);
var arr = s.options;
var len=arr.length;
for( var i=0; i<len; i++ )
{
if(arr[i].value == value)
{
arr[i].selected = true;
break;
}
}
}
</script>
-----------------------------------------------------------------------------------------------------------------
<script>
function test(name,num)
{
var cks = document.getElementsByName(name);
var len = cks.length;
if(num == 1)
{
for(var i=0; i<len; i++)
{
cks[i].checked = true;
}
}else if(num == 0)
{
for(var i=0; i < len; i++)
{
cks[i].checked = false;
}
}else if(num == 2)
{
for(var i=0; i < len; i++)
{
/*if(cks[i].checked = false;
{
}else
{
cks[i].checked = true;
}*/
cks[i].checked = !cks[i].checked; // ! “非” ;“相反的”
}
}
}
</script>
<input type="checkbox" name="aihao" value="ball" />打球
<input type="checkbox" name="aihao" value="swim" />游泳
<input type="checkbox" name="aihao" value="reading" />读书
<p>
<input type="button" value="全选" onclick="test('aihao',1)" />
<input type="button" value="全不选" onclick="test('aihao',0)" />
<input type="button" value="反选" onclick="test('aihao',2)" />
</p>
JS事件
<body onselect="document.selection.empty();">
<script>
function test()
{
return false;
}
</script>
<div id="box">无法复制</div>
1. onclick 鼠标点击
2. onFocus 获得焦点
3. onBlur 失去焦点
4. onChange 改变文本内容 注意:在XHTML中,JS代码小写
-->
<!--<script>
function test()
{
window.alert("被点了");
}
function test2()
{
window.confirm("您真的确定删除吗");
}
function test3(obj) // obj代表形参 , this代表实参
{
alert("值被改成了" + obj.value + '该对象的类型为' + obj.type );
}
document.getElementById('js').click()
</script>
<input type="button" id="js" value="请点击" onclick="test()" />
<input type="button" value="请点击" onclick="test2()" />
<input type="text" onchange="test3(this)" /> // this代表本对象,即input 改变文本内容触发-->
<!--<script>
function test4()
{
document.getElementById("link").click();
}
</script>
<input type="button" value="请点击" onclick="test4()" />
<p><a href="http://baidu.com" id="link">baidu</a></p> -->
<script>
function test(obj)
{
obj.select();
}
function test2(obj)
{
if(obj.value == '') //对象的值 用obj.value表示
{
alert('请输入用户名');
}
}
document.getElementById('bt')
</script>
<p>用户名:<input type="text" onblur="test2(this)" /></p>
<p>密码:<input type="password" onfocus="test(this)" /></p>
-----------------------------------------------------------------------------------------------------
<script>
function test()
{
alert('ok');
}
</script>
<input type="button" value="删除" id="bt1" onclick="test()" />
<input type="button" value="还原" id="bt2" />
<script>
//document.getElementById('bt2').onclick = function(){ test(); }
//function(){} 闭包 匿名函数
document.getElementById('bt2').onclick = test;
//onclick 作为事件 可以写在js中
</script>-->
<!--<script>
function test(num)
{
if ( num == 1)
{
alert ('您点击了删除');
}else if ( num==2 )
{
alert ('您点击了还原');
}
}
</script>
<input type="button" value="删除" id="bt1" />
<input type="button" value="还原" id="bt2" />
<script>
window.document.getElementById("bt1").onclick = function(){test(1)};
window.document.getElementById("bt2").onclick = function(){test(2)};
//function(){} 闭包 匿名函数
</script>-->
<!--<a href="http://baidu.com" onclick="return false;">baidu</a>
//return 可以阻止默认的行为。-->
<!--<script>
function test()
{
var sure = confirm ('您真的想跳转吗?');
if (sure)
{
return true;
}else
{
return false;
}
}
//保存了返回结果 ture或者是false
<!--除了a标签有默认行为(onclick 点击跳转)之外 form 表单(onsubmit 提交表单行为) -->
<!--</script>
<a href="http://baidu.com" onclick="return test()">baidu</a>-->
-----------------------------------------------------------------------------------------------------
<script>
function test ()
{
var content = document.getElementById("username").value
if ( content == '' )
{
alert ('您没有填写用户名!')
return false;
}else
{
return true;
}
}
<!--<script>
/*var pwd = document.getElementById("password").value
var conpwd = document.getElementById("confirm-password").value
function test ()
{
if ( pwd == conpwd )
{
alert ("表单已经成功提交")
return true;
}else
{
alert ("两次密码输入不一致")
return false;
}
}*/
</script>
<form onsubmit="return test()" action="http://baidu.com">
用户名: <input type="text" id="username" />
<br />
密码: <input type="password" id="password" />
密码确认: <input type="password" id="confirm-password" />
<input type="submit" value="提交" />
</form>
-----------------------------------------------------------------------------------------------------
function $(id)
{
return document.getElementById(id);
}
function jisuan(fuhao)
{
//value返回的是字符串类型 parseInt() 将字符串转换成数字整形
//复制 与 引用 , 对象的传递 引用 别名 指向同一个对象, 值的传递 复制 。
if(fuhao == '+')
{
var n1 = parseInt(document.getElementById("num1").value);
var n2 = parseInt(document.getElementById("num2").value);
document.getElementById("result").value = n1 + n2;
}else if ( fuhao == '-' )
{
var n1 = parseInt(document.getElementById("num1").value);
var n2 = parseInt(document.getElementById("num2").value);
//传递值 var n3 = document.getElementById("result").value;
// n3= n1 + n2; 无法将结果输出到 result.
document.getElementById("result").value = n1 - n2;
}else if ( fuhao == "*" )
{
var n1 = parseInt(document.getElementById("num1").value);
var n2 = parseInt(document.getElementById("num2").value);
document.getElementById("result").value = n1 * n2;
}else //else( fuhao == "/" ) 如果在括号中设定了条件,那么不管是否成立,else下的语句都将执行,如果不设立条件,则相当于default
{
var n1 = parseInt(document.getElementById("num1").value);
var n2 = parseInt(document.getElementById("num2").value);
document.getElementById("result").value = n1 / n2;
}*/
/*function jisuan(fuhao)
{
var n1 = parseInt(document.getElementById("num1").value);
var n2 = parseInt(document.getElementById("num2").value);
var n3;
switch (fuhao)
{
case '+':
n3 = n1 + n2;
break;
case '-':
n3 = n1 - n2;
break;
case '*':
n3 = n1 * n2;
break;
case '/':
n3 = n1 / n2;
break;
}
document.getElementById('result').value = n3;
}*/
alert ( eval( '1+1' ) ); //eval() 传入的参数是可计算的 就会计算 , 如果是可运行的语句 就会运行
eval("alert('ok')"); //alert('ok') 不再是字符串 eval() 是JS的运行器 只要是合法的语句就能够执行 不管是否是字符串
function jisuan(fuhao)
{
var n1 = parseInt(document.getElementById("num1").value);
var n2 = parseInt(document.getElementById("num2").value);
document.getElementById('result').value = eval(n1 + fuhao + n2 ); //fuhao 传递的实参是字符串 + 就是连接符
}
</script>
<body>
<p>第一个数:<input type="text" id="num1" /></p>
<p>第二个数:<input type="text" id="num2" /></p>
<input type="button" value="+" onclick="jisuan('+')" />
<input type="button" value="-" onclick="jisuan('-')" />
<input type="button" value="*" onclick="jisuan('*')" />
<input type="button" value="/" onclick="jisuan('/')" />
<!--加减乘除都属于 字符串 所以要用引号-->
<p>结果:<input type="text" id="result" /></p>
</body>
JS表单验证与特效:
<script>
function check(obj)
{
/*if (document.getElementsByName('username')[0].value == '')
//document.getElementsByName().value 以及document.getElementsByTagName().value抓取的都是一个集合并不是一个单独的值 但是getElementById() 抓取的是一个具体的属性值
表单对象.域(name/id) 也能抓取对象 */
if ( obj.username.value == "" )
/*obj.username是简写 只适用于拥有唯一的name属性的域(控件) 全称是obj.elements['username'] */
{
alert('用户名不能为空');
return false;
}
if ( obj.password.value == "" )
{
alert('密码不能为空');
return false;
}
alert {obj.elements['aihao[]'].length }; //当拥有同一个name属性的控件为多个时 此时的域值为集合 当集合中值的个数只剩下一个的时候 obj.elements[]中获取的属性值自动变成对象的属性值 而不再是集合
}
</script>
<form onsubmit="return check(this)">
用户名:<input type="text" name="username" id="username" /> <!--尽量保证id和name的值相同 以确保兼容-->
密码:<input type="password" name="password" id="password" />
<p>爱好:<input type="checkbox" name="aihao[]" value="0" />篮球 <input type="checkbox" name="aihao[]" value="1" />音乐 <input type="checkbox" name="aihao[]" value="2" />电影</p>
<p><input type="submit" value="提交" /></p>
</form>
-----------------------------------------------------------------------------------------------------
<script>
function formyz(obj)
{
if(obj.username.value == "")
{
//alert('用户名不能为空');
document.getElementById("usernametext").innerHTML = "用户名不能为空";
obj.username.focus();
return false; //让函数代表false
}
if(obj.pwd.value.length < 4)
{
alert('密码少于四位数');
obj.pwd.focus();
return false;
}
if(obj.age.value<8 || obj.age.value>150)
{
alert('请输入合适的年龄');
obj.age.focus();
return false;
}
//if(a == false)=if(!a) 如果a为假 if(a == true)=if(a) 如果a为真
//if( !obj.elements['sex'][0].checked && !obj.elements['sex'][1].checked)
var a=false;
var sex = obj.elements['sex'];
for(var i=0,len=sex.length;i<len;i++)
{
/* if( !sex[i].checked )
{
alert("请选择性别");
return false;
break;
} */ //错误的程序 “如果只要有一个没选中就会提交失败”
if(sex[i].checked)
{
a = true;
break;
}
}
if(!a)
{
alert("请选择性别");
return false;
}
var num = 0;
var aihao = obj.elements['aihao[]'];
for( var i=0,len=aihao.length; i<len; i++ )
{
if(aihao[i].checked)
{
num++;
}
}
if(num<2)
{
alert("请最少选择两个");
return false;
}
if( obj.os.value == '')
{
alert("请选择你所用的操作系统");
return false;
}
function check_name(obj)
{
document.getElementById('usernametext').innerHTML="";
}
}
</script>
<form action="2.php" method="post" enctype="multipart-form-data" onsubmit="return formyz(this)">
<p>用户名:<input type="text" name="username" size="40" maxlength="4" onblur="check_name(this)" /><span id="usernametext" class="cRed"></span></p>
<p>密码:<input type="password" name="pwd" /></p>
<p>年龄:<input type="text" name="age" /></p>
<p>性别:<input type="radio" name="sex" value="man" />男
<input type="radio" name="sex" value="woman" />女 </p>
<p>爱好:<input type="checkbox" name="aihao[]" value="篮球" />篮球
<input type="checkbox" name="aihao[]" value="音乐" />音乐
<input type="checkbox" name="aihao[]" value="电影" checked="checked" />电影</p>
<p>你所用的系统:
<select name="os" id="os">
<option value="" selected="selected">请选择</option>
<option value="1">windows系统</option>
<option value="2">Linux系统</option>
<option value="3">ios系统</option>
</select>
<p><input type="submit" value="提交" /></p>
</form>
-----------------------------------------------------------------------------------------------------
<script>
alert( navigator.userAgent );
</script>
<div id="box" myname="fu">内容</div>
<script>
//alert( document.getElementById('box').innerHTML );
//alert( box.innerHTML ); //只能兼容于IE浏览器
//如果没在div中写好myname="fu" 此时的属性需要用 document.getElementById('box').setAttribute( "myname" , "fu" )
//alert( document.getElementById('box').getAttribute('myname') );
alert( document.getElementById('box').myname ); //在IE浏览器中 就算是非内置的属性,也可以直接用对象.属性
</script>
<script>
function t(obj)
{
//obj.focus();
window.setTimeout( function () {obj.focus();},0 );
//兼容写法
}
</script>
<input type="text" onblur="t(this)" />
<!--在火狐浏览器中 /同一个对象 /先得到焦点focus() /再失去焦点onblur()-->
-----------------------------------------------------------------------------------------------------
<style>
/* #box{ height:500px;400px;background-color:red; }*/
a { background-color:#FC6; color:#FFF; }
div{ background-color:#FC6; height:200px; clear:both; text-indent:20px; }
#a2{ background-color:#99c; color:#FFF; }
#d2{ background-color:#99c; color:#FFF; }
</style>
</head>
<!-- <script>
function show(obj)
{
document.getElementById(obj).style.display= "block";
document.getElementById(obj).style.fontSize= "36px"; //ie浏览器中 可以不加单位
}
</script>
<body>
<div id="box" style="display:none">无标题文档</div>
<input type="button" value="显示" onclick="show('box')" /> -->
<script>
function change(obj)
{
document.getElementById('d1').style.display = document.getElementById('d2').style.display = 'none';
document.getElementById('d'+obj).style.display = 'block';
}
</script>
<a onclick="change(1)">这是第一张卡</a><a onclick="change(2)" id="a2">这是第一张卡</a>
<div id="d1">这是第一张卡的内容</div>
<div id="d2" style="display:none;">这是第二张卡的内容</div>
问题补充———一些让人疑惑的地方:
function de() {
var ab = 25; //数值
var ba = "25"; //字符串
if (ab == ba) { //==,会先转换,后比对。
//alert("b");
}
if (!(ab === ba)) { //===不会转换,而进行直接比对,ab是数值类型数据,而ba是字符串类型数据
//alert("a");
}
}
/*
!b
!!b
*/
function dd() {
var b= 1;
if (!!b) { //!时它是非0数值,所以返回false,当!!时,则先进一步boolean()方法,然后再对这个布尔值求反,于是得到了本身值。
//alert("a");
}
}
/*
parseInt parseFloat
*/
function parse() {
var a = "18px";
var b = parseInt(a); //返回数值18
var c = parseInt(a, 10); //返回数值18,可以传参数,进制
//alert(b);
alert(c);
var e = "18.2px";
var d = parseFloat(e);
alert(d)
/*
parseInt与parseFloat的区别在于,parseFloat转换数值时,不会忽略第一个小数点,也就是说,会保留第一个小数点之后的数,但是会忽略第二个小
数点。
parseFloat还会忽略第一个位置处的0。
*/
}
window.onload = function () {
parse();
dd();
de();
}