你知道世界上有多少种浏览器吗?除了我们熟知的IE, Firefox, Opera, Safari四大浏览器之外,世界上还有近百种浏览器。
几天前,浏览器家族有刚诞生了一位小王子,就是Google推出的Chrome浏览器。由于Chrome出生名门,尽管他还是个小家伙,没有人敢小看他。以后,咱们常说浏览器的“四大才子”就得改称为“五朵金花”了。
在网站前端开发中,浏览器兼容性问题本已让我们手忙脚乱,Chrome的出世不知道又要给我们添多少乱子。浏览器兼容性是前端开发框架要解决的第一个问题,要解决兼容性问题就得首先准确判断出浏览器的类型及其版本。
JavaScript是前端开发的主要语言,我们可以通过编写JavaScript程序来判断浏览器的类型及版本。JavaScript判断浏览器类型一般有两种办法,一种是根据各种浏览器独有的属性来分辨,另一种是通过分析浏览器的userAgent属性来判断的。在许多情况下,值判断出浏览器类型之后,还需判断浏览器版本才能处理兼容性问题,而判断浏览器的版本一般只能通过分析浏览器的userAgent才能知道。
& ......
<HTML>
<HEAD>
<META http-equiv='Content-Type' content='text/html; charset=gb2312'>
<TITLE>用按钮显示源代码或者javascript里面的内容,有时会有</TITLE>
</HEAD>
<BODY >
<script id=abc >
function dennisboys()
{
var i=0;
alert(document.documentElement.childNodes[0].outerHTML)
}
</script>
<input type=button onclick=dennisboys() style="width:160" value=显示head里面的内容>
<input type="button" value="显示javascript里面代码" style="width:160" onclick="alert(document.all.abc.innerHTML)">
</BODY></HTML> ......
javascript获取select的值全解
获取显示的汉字
document.getElementById("bigclass").options[window.document.getElementById("bigclass").selectedIndex].text
获取数据库中的id
window.document.getElementById("bigclass").value
获取select组分配的索引id
window.document.getElementById("bigclass").selectedIndex
例子:
<select name="bigclass" id="bigclass" onChange="javascript:updatePage2();">
<option value="" selected="selected">ajax实验</option>
<option value="4">我适宜市哈</option>
</select>
使用
document.getElementById("bigclass").options[window.document.getElementById("bigclass").selectedIndex].text
的结果是:我适宜市哈
使用
window.document.getElementById("bigclass").value
的结果是:4
使用
window.document.getElementById("bigclass").selectedIndex
的结果是:1
================
function chk(){
var obj = document.getElementById("shijian");
var strsel = obj.options[obj.selectedIndex].text;
alert(strsel); ......
<script type="text/javascript">
function checkform() {
//判断标题栏是否填写
if (document.form1.title.value == "") {
alert("信息类型不能为空!");
document.form1.title.focus();
return;
}
//判断checkbox是否被选中
var len = document.form1.keywords.length;
var checked = false;
for (i = 0; i < len; i++)
{
if (document.form1.keywords[i].checked == true)
{
checked = true;
break;
}
&n ......
<!--
@page { margin: 2cm }
P { margin-bottom: 0.21cm }
-->
闭包(
closure
)
闭包意味着内层的函数可以引用存在于包围他的函数内的变量,即使外层函数的执行已经终止。这个特性非常强大和复杂。
例如:闭包如何使代码更清晰的两个例子
找出
ID
为‘
main’
的元素
var
obj=document.getElementById("main");
修改它的
border
样式
obj.style.border = "1px solid
red";
初始化一个在一秒后执行的回调函数
(callback)
setTimeout(function(){
她将隐藏此对象
obj.style.display = 'none';
},1000);
一个用于延时显示警告信息的通用函数
function delayedAlert(msg, time){
初始化一个封装的回调函数
setTimeout(function(){
她将包含本函数的外围函数传入的
msg
变量
alert(msg);
},time);
}
用两个参数调用
delayedAlert
函数
delayedAlert("zhangxinagrong",2000);
在一些函数式程序设计语言里,有一种称为
Curry
化得技术。本质上,
Curry
化是一种通过把多个参数填充到函数体中,实现将函数转换为一个新的经过简化的 ......
倒计时计算
<body>
<div id="countdown"></div>
<mce:script type="text/javascript"><!--
var i = 0;
(function(){
var hour, min, sec, text;
tmp = 12 * 60 * 60 - i;
hour = Math.floor(tmp / 3600);
tmp %= 3600;
min = Math.floor(tmp / 60);
tmp %= 60;
sec = tmp;
text = hour + ' 时 ' + min + ' 分 ' + sec + ' 秒';
document.getElementById("countdown").innerHTML = text;
i++;
setTimeout(arguments.callee, 1000);
})();
// --></mce:script>
</body>
说明:callee也拥有length属性,arguments.length是实参长度,arguments.callee.length是形参长度。
当连续调用同一函数并传递参数,函数体处理的是最后一次调用函数时传递的值,前面传递的值被覆盖
造成该问题出现的常见情况:
1) 函数体内做处理时,使用了全局变量存储参数值(函数体内没有用var关键字定义变量),导致第二次的参数值覆盖了上次的 ......