Javascript教程 – 设计之家 //www.laura-marie.com 传播先进设计理念 推动原创设计发展 Sun, 28 Oct 2007 15:52:00 +0000 zh-Hans hourly 1 https://wordpress.org/?v=6.9.4 JS函数实现鼠标指向图片后显示大图代码 //www.laura-marie.com/12620.html //www.laura-marie.com/12620.html#respond Sun, 28 Oct 2007 15:52:00 +0000

     

[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

]]>
//www.laura-marie.com/12620.html/feed 0
JavaScript基本数据结构 //www.laura-marie.com/12410.html //www.laura-marie.com/12410.html#respond Mon, 08 Oct 2007 01:51:00 +0000 JavaScript提供脚本语言的编程与C++非常相似,它只是去掉了C语言中有关指针等容易产生的错误,并提供了功能强大的类库。对于已经具备C++或C语言的人来说,学习JavaScript脚本语言是一件非常轻松愉快的事。

一、JavaScript代码的加入
  JavaScript的脚本包括在HTML中,它成为HTML文档的一部分。与HTML标识相结合,构成了一个功能强大的Internet网上编程语言。可以直接将JavaScript脚本加入文档:

<Script Language =”JavaScript”>
JavaScript语言代码;
JavaScript 语言代码;
….
</Script>

说明:
  通过标识<Script>…</Script>指明JavaScript脚本源代码将放入其间。
  通过属性Language =”JavaScript”说明标识中是使用的何种语言,这里是JavaScript语言, 表示在JavaScript中使用的语言。

  下面是将JavaScript脚本加入Web文档中的例子:
Test2.html
<HTML>
<Head>
<Script Language =”JavaScript”>
document. Write(“这是赛迪网互动学校”);
document. close();
</Script>
</Head>
</HTML>

  在浏览器的窗口中调用test2.html,则显示“这是赛迪网互动学校”字串。
  说明:
  Document. write()是文档对象的输出函数,其功能是将括号中的字符或变量值输出到窗口;document. close()是将输出关闭。
可将<Script>…</Script>标识放入head>.. </Head>或<Body> …</Body>之间。将JavaScript标识放置<Head>… </Head>在头部之间,使之在主页和其余部分代码之前装载,从而可使代码的功能更强大;可以将JavaScript标识放置在<Body>… </Body>主体之间以实现某些部分动态地创建文档。

二、基本数据类型
  JavaScript脚本语言同其它语言一样,有它自身的基本数据类型、表达式和算术运算符以及程序的基本框架结构。JavaScript提供了四种基本的数据类型用来处理数字和文字, 而变量提供存放信息的地方, 表达式则可以完成较复杂的信息处理。

1、基本数据类型
  在JavaScript中四种基本的数据类型:数值(整数和实数)、字符串型(用“”号或‘’括起来的字符或数值)、布尔型(使True或False表示)和空值。在JavaScript的基本类型中的数据可以是常量,也可以变量。由于JavaScript采用弱类型的形式,因而一个数据的变量或常量不必首先作声明,而是在使用或赋值时确定其数据的类型的。当然也可以先声明该数据的类型,它是通过在赋值时自动说明其数据类型的。

2、常量
 整型常量
JavaScript的常量通常又称字面常量,它是不能改变的数据。其整型常量可以使用十六进制、八进制和十进制表示其值。
 实型常量
实型常量是由整数部分加小数部分表示,如12.32、193.98 。可以使用科学或标准方法表示:5E7、4e5等。
 布尔值
布尔常量只有两种状态:True或False。 它主要用来说明或代表一种状态或标志,以说明操作流程。它与C++是不一样的,C++可以用1或0表示其状态,而JavaScript只能用True或False表示其状态。
 字符型常量
使用单引号(‘)或双引号(“)括起来的一个或几个字符。如 “This is a book of JavaScript “、”3245″、”ewrt234234” 等。
 空值
JavaScript中有一个空值null,表示什么也没有。如试图引用没有定义的变量,则返回一个Null值。
 特殊字符
同C语言一样,JavaScript中同样以有些以反斜杠(/)开头的不可显示的特殊字符。通常称为控制字符。
 
3、变量
  变量的主要作用是存取数据、提供存放信息的容器。对于变量必须明确变量的命名、变量的类型、变量的声明及其变量的作用域。
 变量的命名
JavaScript中的变量命名同其计算机语言非常相似,这里要注意以下两点:
A、必须是一个有效的变量,即变量以字母开头,中间可以出现数字如test1、text2等。除下划线(-)作为连字符外,变量名称不能有空格、(+)、(-)、(,)或其它符号。
B、不能使用JavaScript中的关键字作为变量。
在JavaScript中定义了40多个类键字,这些关键是JavaScript内部使用的,不能作为变量的名称。如Var、int、double、true不能作为变量的名称。
  在对变量命名时,最好把变量的意义与其代表的意思对应起来,以免出现错误。
 变量的类型
在JavaScript中,变量可以用命令Var作声明:
var mytest;
该例子定义了一个mytest变量。但没有赋予它的值。
Var mytest=”This is a book”
该例子定义了一个mytest变量, 同时赋予了它的值。
在JavaScript中,变量以可以不作声明,而在使用时再根据数据的类型来确其变量的类型。
如:
x=100
y=”125″
xy= True
cost=19.5等。
其中x整数,y为字符串,xy为布尔型,cost为实型。
 变量的声明及其作用域
JavaScript变量可以在使用前先作声明,并可赋值。通过使用var关键字对变量作声明。对变量作声明的最大好处就是能及时发现代码中的错误;因为JavaScript是采用动态编译的,而动态编译是不易发现代码中的错误,特别是变量命名的方面。
对于变量还有一个重要性──那就是变量的作用域。在JavaScript中同样有全局变量和局部变量。全局变量是定义在所有函数体之外,其作用范围是整个函数;而局部变量是定义在函数体之内,只对其该函数是可见的,而对其它函数则是不可见的。
 
三、表达式和运算符

1、表达式
  在定义完变量后,就可以对它们进行赋值、改变、计算等一系列操作,这一过程通常又叫称一个叫表达式来完成,可以说它是变量、常量、布尔及运算符的集合,因此表达式可以分为算术表述式、字串表达式、赋值表达式以及布尔表达式等。

2、运算符
  运算符完成操作的一系列符号,在JavaScript中有算术运算符,如+、-、*、/等;有比较运算符如!=、==等; 有逻辑布尔运算符如!(取反)、|、||; 有字串运算如+ 、 +=等。
  在JavaScript主要有双目运算符和单目运算符。其双目运算符由下列组成:
操作数1 运算符 操作数2
  即由两个操作数和一个运算符组成。如50+40、”This”+”that”等。单目运算符,只需一个操作数,其运算符可在前或后。
(1)算术运算符
  JavaScript中的算术运算符有单目运算符和双目运算符。
双目运算符:
+(加) 、-(减)、 *(乘)、 /(除)、 %(取模) 、|(按位或)、&(按位与)、<<(左移)、 >>(右移)、 >>>(右移,零填充)。
单目运算符:
-(取反)、~(取补)、++(递加1)、–(递减1)。
(2)比较运算符
  比较运算符它的基本操作过程是,首先对它的操作数进行比较,尔后再返回一个true或False值,有8个比较运算符:
<(小于)、>(大于)、<=(小于等于)、>=(大于等于)、==(等于)、!=(不等于)。
(3)布尔逻辑运算符
  在JavaScript中增加了几个布尔逻辑运算符:
!(取反)、&=(与之后赋值)、 &(逻辑与)、 |=(或之后赋值)、 |(逻辑或)、 ^=(异或之后赋值)、 ^(逻辑异或)、 ?:(三目操作符)、||(或)、==(等于)、|=(不等于)。
  其中三目操作符主要格式如下:
操作数?结果1:结果2
  若操作数的结果为真,则表述式的结果为结果1,否则为结果2。

四、范例
  下面是一个跑马灯效果的JavaScript文档。

Test2_1.html
<html>
<head>
<script Language=”JavaScript”>
var msg=”这是一个跑马灯效果的JavaScript文档”;
var interval = 100;
var spacelen = 120;
var space10=” “;
var seq=0;
function Scroll() {
len = msg.length;
window.status = msg.substring(0, seq+1);
seq++;
if ( seq >= len ) {
seq = spacelen;
window.setTimeout(“Scroll2();”, interval );
}
else
window.setTimeout(“Scroll();”, interval );
}
function Scroll2() {
var out=””;
for (i=1; i<=spacelen/space10.length; i++) out +=
space10;
out = out + msg;
len=out.length;
window.status=out.substring(seq, len);
seq++;
if ( seq >= len ) { seq = 0; };
window.setTimeout(“Scroll2();”, interval );
}
Scroll();
</script>
<body>
</body>
</html>

  本文介绍了JavaScript脚本是如何加入Web页面, 并学习了JavaScript语言中的基本数据类型、变量、常量、操作运算符等。可以看出,对于已经掌握C++语言的人来说,学习JavaScript真是一件非常轻松愉快的事。

]]>
//www.laura-marie.com/12410.html/feed 0
名词解释:JavaScript、Jscript、VBScript、ASP //www.laura-marie.com/12382.html //www.laura-marie.com/12382.html#respond Fri, 05 Oct 2007 16:33:00 +0000 很多人都被这几个名词搞糊涂了,这里做个归纳,澄清这几种概念。
JavaScript
JavaScript 最先由 Netscape 公司开发,原名叫 LiveScript,设计该语言时部分参考了Java,并且当时Java语言火热得很,因此不久就改名为JavaScript。Netscape 公司在其网景浏览器上实现了该语言,应用于客户端开发。
Jscript
这里不得不先提一下微软的一款产品VBScript,其语法怪异(对于Java程序员来说),缺乏OOP概念的支持等原因,导致VBScript叫好不叫座,于是财大气粗的微软仿照崭新的客户端语言JavaScript打造出自家的Jscript,希望能抢占市场。就目前来说JavaScript与Jscript,几乎没有区别。
VBScript
如上面所说,VBScript是微软的产品,开始时应用于客户端开发。后来有了动态脚本的概念后(ASP出来了),微软就把该产品与自家的Jscript两种语言各自实现了动态脚本的概念。
ASP
ASP全称是Active Server Page,这是一种技术而不是一种语言,现在大部分ASP都使用 VBScript 来实现,服务器IIS默认的语言也是VBScript。既然有默认语言,那么就表示有非默认的语言,没错,就是Jscript,如前面所说,Jscript也能应用在服务端,甚至完全替代VBScript,操作数据库等。

这也就是说,VBScript 与 Jscript 两种脚本语言既能应用与客户端,也能应用与服务端。看看下面的例子:
<script language=”vbscript”>
<!–
//客户端脚本vbs
response.write “demo text…” //不区分大小写,语法相当宽松
–>
</script>

<script language=”Javascript”>
<!–
//客户端脚本js
document.write(“demo text…”) //内置对象必须区分大小写
–>
</script>

<script language=”vbscript” runat=”server” >
<!–
//服务端脚本vbs
response.write “demo text…” //不区分大小写,语法相当宽松
–>
</script>

<script language=”javascript” runat=”server” >
<!–
//服务端脚本js
Response.Write(“demo text…”) //ASP内置对象必须区分大小写 –>
</script>
或者:
<%@LANGUAGE=”JAVASCRIPT”%> //放在服务端页面第一行,表示该页默认使用Javascript脚本,在页面的其他地方使用<%’code…%>,解释器就认为这是第一行定义的语言
<%@LANGUAGE=”VBSCRIPT”%> //放在服务端页面第一行,表示该页使用VBSCRIPT脚本,在页面的其他地方使用<%’code…%>,解释器就认为这是第一行定义的语言

另外,.vbs与.js还能在被 Window Script Host (WSH) 所解释运行

]]>
//www.laura-marie.com/12382.html/feed 0
JavaScript容易犯错的九个陷阱 //www.laura-marie.com/12376.html //www.laura-marie.com/12376.html#respond Fri, 05 Oct 2007 13:44:00 +0000

来自 Nine Javascript Gotchas , 以下是JavaScript容易犯错的九个陷阱。虽然不是什么很高深的技术问题,但注意一下,会使您的编程轻松些,即所谓make life easier. 笔者对某些陷阱会混杂一些评点。

1. 最后一个逗号

如这段代码,注意最后一个逗号,按语言学角度来说应该是不错的(python的类似数据类型辞典dictionary就允许如此)。IE会报语法错误,但语焉不详,你只能用人眼从几千行代码中扫描。

<script>
  var theObj = {
        city : “Boston”,
        state : “MA”,
  }
</script>

2. this的引用会改变

如这段代码:

<input type=”button” value=”Gotcha!” id=”MyButton” >
<script>
var MyObject = function () {
    this.alertMessage = “Javascript rules”;
    this.ClickHandler = function() {
        alert(this.alertMessage );
  }
}();
document.getElementById(”theText”).onclick =  MyObject.ClickHandler
</script>

并不如你所愿,答案并不是”JavaScript rules”。在执行MyObject.ClickHandler时,代码中红色这行,this的引用实际上指向的是document.getElementById(“theText”)的引用。可以这么解决:

<input type=”button” value=”Gotcha!” id=”theText” >
<script>
var MyObject = function () {
    var self = this;
    this.alertMessage = “Javascript rules”;
    this.OnClick = function() {
        alert(self.value);
    }
}();
document.getElementById(”theText”).onclick =  MyObject.OnClick
</script>

实质上,这就是JavaScript作用域的问题。如果你看过,你会发现解决方案不止一种。

3. 标识盗贼

在JavaScript中不要使用跟HTML的id一样的变量名。如下代码:

<input type=”button” id=”TheButton”>
<script>
    TheButton = get(“TheButton”);
</script>

IE会报对象未定义的错误。我只能说:IE sucks.

4. 字符串只替换第一个匹配

如下代码:

<script>
    var fileName = “This is a title”.replace(” “,”_”);
</script>

而实际上,结果是”This_is a title“. 在JavaScript中,String.replace的第一个参数应该是正则表达式。所以,正确的做法是这样:

var fileName = “This is a title”.replace(/ /g,”_”);

5. mouseout意味着mousein

事实上,这是由于事件冒泡导致的。IE中有mouseenter和mouseleave,但不是标准的。作者在此建议大家使用库比如YUI来解决问题。

6. parseInt是基于进制体系的

这个是常识,可是很多人给忽略了parseInt还有第二个参数,用以指明进制。比如,parseInt(“09”),如果你认为答案是9,那就错了。因为,在此,字符串以0开头,parseInt以八进制来处理它,在八进制中,09是非法,返回false,布尔值false转化成数值就是0. 因此,正确的做法是parseInt(“09”, 10).

7. for…in…会遍历所有的东西

有一段这样的代码:

var arr = [5,10,15]
var total = 1;
for ( var x in arr) {
    total = total * arr[x];
}

运行得好好的,不是吗?但是有一天它不干了,给我返回的值变成了NaN, 晕。我只不过引入了一个库而已啊。原来是这个库改写了Array的prototype,这样,我们的arr平白无过多出了一个属性(方法),而for…in…会把它给遍历出来。所以这样做才是比较安全的:

for ( var x = 0; x < arr.length; x++) {
    total = total * arr[x];
}

其实,这也是污染基本类的prototype会带来危害的一个例证。

8. 事件处理器的陷阱

这其实只会存在使用作为对象属性的事件处理器才会存在的问题。比如window.onclick = MyOnClickMethod这样的代码,这会复写掉之前的window.onclick事件,还可能导致IE的内容泄露(sucks again)。在IE还没有支持DOM 2的事件注册之前,作者建议使用库来解决问题,比如使用YUI:

YAHOO.util.Event.addListener(window, “click”, MyOnClickMethod);

这应该也属于常识问题,但新手可能容易犯错。

9. Focus Pocus

新建一个input文本元素,然后把焦点挪到它上面,按理说,这样的代码应该很自然:

var newInput = document.createElement(“input”);
document.body.appendChild(newInput);
newInput.focus();
newInput.select();

但是IE会报错(sucks again and again)。理由可能是当你执行fouce()的时候,元素尚未可用。因此,我们可以延迟执行:

var newInput = document.createElement(“input”);
newInput.id = “TheNewInput”;
document.body.appendChild(newInput);
setTimeout(function(){ //这里我使用闭包改写过,若有兴趣可以对比原文
 document.getElementById(‘TheNewInput’).focus();
 document.getElementById(‘TheNewInput’).select();}, 10);

在实践中,JavaScript的陷阱还有很多很多,大多是由于解析器的实现不到位而引起。这些东西一般都不会在教科书中出现,只能靠开发者之间的经验分享。谢天谢地,我们生活在网络时代,很多碰到的问题,一般都可以在Google中找到答案。

]]>
//www.laura-marie.com/12376.html/feed 0
js鼠标事件 //www.laura-marie.com/11913.html //www.laura-marie.com/11913.html#respond Sun, 29 Jul 2007 08:06:00 +0000
一般事件
事件浏览器支持描述
onClickIE3|N2|O3鼠标点击事件,多用在某个对象控制的范围内的鼠标点击
onDblClickIE4|N4|O鼠标双击事件
onMouseDownIE4|N4|O鼠标上的按钮被按下了
onMouseUpIE4|N4|O鼠标按下后,松开时激发的事件
onMouseOverIE3|N2|O3当鼠标移动到某对象范围的上方时触发的事件
onMouseMoveIE4|N4|O鼠标移动时触发的事件
onMouseOutIE4|N3|O3当鼠标离开某对象范围时触发的事件
onKeyPressIE4|N4|O当键盘上的某个键被按下并且释放时触发的事件.[注意:页面内必须有被聚焦的对象]
onKeyDownIE4|N4|O当键盘上某个按键被按下时触发的事件[注意:页面内必须有被聚焦的对象]
onKeyUpIE4|N4|O当键盘上某个按键被按放开时触发的事件[注意:页面内必须有被聚焦的对象]
页面相关事件
事件浏览器支持描述
onAbortIE4|N3|O图片在下载时被用户中断
onBeforeUnloadIE4|N|O当前页面的内容将要被改变时触发的事件
onErrorIE4|N3|O捕抓当前页面因为某种原因而出现的错误,如脚本错误与外部数据引用的错误
onLoadIE3|N2|O3页面内空完成传送到浏览器时触发的事件,包括外部文件引入完成
onMoveIE|N4|O浏览器的窗口被移动时触发的事件
onResizeIE4|N4|O当浏览器的窗口大小被改变时触发的事件
onScrollIE4|N|O浏览器的滚动条位置发生变化时触发的事件
onStopIE5|N|O浏览器的停止按钮被按下时触发的事件或者正在下载的文件被中断
onUnloadIE3|N2|O3当前页面将被改变时触发的事件
表单相关事件
事件浏览器支持描述
onBlurIE3|N2|O3当前元素失去焦点时触发的事件 [鼠标与键盘的触发均可]
onChangeIE3|N2|O3当前元素失去焦点并且元素的内容发生改变而触发的事件 [鼠标与键盘的触发均可]
onFocusIE3|N2|O3当某个元素获得焦点时触发的事件
onResetIE4|N3|O3当表单中RESET的属性被激发时触发的事件
onSubmitIE3|N2|O3一个表单被递交时触发的事件
滚动字幕事件
事件浏览器支持描述
onBounceIE4|N|O在Marquee内的内容移动至Marquee显示范围之外时触发的事件
onFinishIE4|N|O当Marquee元素完成需要显示的内容后触发的事件
onStartIE4|N|O当Marquee元素开始显示内容时触发的事件
编辑事件
事件浏览器支持描述
onBeforeCopyIE5|N|O当页面当前的被选择内容将要复制到浏览者系统的剪贴板前触发的事件
onBeforeCutIE5|N|O当页面中的一部分或者全部的内容将被移离当前页面[剪贴]并移动到浏览者的系统剪贴板时触发的事件
onBeforeEditFocusIE5|N|O当前元素将要进入编辑状态
onBeforePasteIE5|N|O内容将要从浏览者的系统剪贴板传送[粘贴]到页面中时触发的事件
onBeforeUpdateIE5|N|O当浏览者粘贴系统剪贴板中的内容时通知目标对象
onContextMenuIE5|N|O当浏览者按下鼠标右键出现菜单时或者通过键盘的按键触发页面菜单时触发的事件 [试试在页面中的<body>中加入onContentMenu=”return false”就可禁止使用鼠标右键了]
onCopyIE5|N|O当页面当前的被选择内容被复制后触发的事件
onCutIE5|N|O当页面当前的被选择内容被剪切时触发的事件
onDragIE5|N|O当某个对象被拖动时触发的事件 [活动事件]
onDragDropIE|N4|O一个外部对象被鼠标拖进当前窗口或者帧
onDragEndIE5|N|O当鼠标拖动结束时触发的事件,即鼠标的按钮被释放了
onDragEnterIE5|N|O当对象被鼠标拖动的对象进入其容器范围内时触发的事件
onDragLeaveIE5|N|O当对象被鼠标拖动的对象离开其容器范围内时触发的事件
onDragOverIE5|N|O当某被拖动的对象在另一对象容器范围内拖动时触发的事件
onDragStartIE4|N|O当某对象将被拖动时触发的事件
onDropIE5|N|O在一个拖动过程中,释放鼠标键时触发的事件
onLoseCaptureIE5|N|O当元素失去鼠标移动所形成的选择焦点时触发的事件
onPasteIE5|N|O当内容被粘贴时触发的事件
onSelectIE4|N|O当文本内容被选择时的事件
onSelectStartIE4|N|O当文本内容选择将开始发生时触发的事件
数据绑定
事件浏览器支持描述
onAfterUpdateIE4|N|O当数据完成由数据源到对象的传送时触发的事件
onCellChangeIE5|N|O当数据来源发生变化时
onDataAvailableIE4|N|O当数据接收完成时触发事件
onDatasetChangedIE4|N|O数据在数据源发生变化时触发的事件
onDatasetCompleteIE4|N|O当来子数据源的全部有效数据读取完毕时触发的事件
onErrorUpdateIE4|N|O当使用onBeforeUpdate事件触发取消了数据传送时,代替onAfterUpdate事件
onRowEnterIE5|N|O当前数据源的数据发生变化并且有新的有效数据时触发的事件
onRowExitIE5|N|O当前数据源的数据将要发生变化时触发的事件
onRowsDeleteIE5|N|O当前数据记录将被删除时触发的事件
onRowsInsertedIE5|N|O当前数据源将要插入新数据记录时触发的事件
数据绑定
事件浏览器支持描述
onAfterPrintIE5|N|O当文档被打印后触发的事件
onBeforePrintIE5|N|O当文档即将打印时触发的事件
onFilterChangeIE4|N|O当某个对象的滤镜效果发生变化时触发的事件
onHelpIE4|N|O当浏览者按下F1或者浏览器的帮助选择时触发的事件
onPropertyChangeIE5|N|O当对象的属性之一发生变化时触发的事件
onReadyStateChangeIE4|N|O当对象的初始化属性值发生变化时触发的事件

]]>
//www.laura-marie.com/11913.html/feed 0
网页制作常用Javascript语句 //www.laura-marie.com/11454.html //www.laura-marie.com/11454.html#respond Tue, 24 Apr 2007 03:30:00 +0000 1.document.write(“”); 输出语句
2.JS中的注释为//
3.传统的HTML文档顺序是:document->html->(head,body)
4.一个浏览器窗口中的DOM顺序是:window->(navigator,screen,history,location,document)
5.得到表单中元素的名称和值:document.getElementById(“表单中元素的ID?”).name(或value)
6.一个小写转大写的JS: document.getElementById(“output”).value = document.getElementById(“input”).value.toUpperCase();
7.JS中的值类型:String,Number,Boolean,Null,Object,Function
8.JS中的字符型转换成数值型:parseInt(),parseFloat()
9.JS中的数字转换成字符型:(“” 变量)
10.JS中的取字符串长度是:(length)
11.JS中的字符与字符相连接使用 ?.
12.JS中的比较操作符有:==等于,!=不等于,>,>=,<.<=
13.JS中声明变量使用:var来进行声明
14.JS中的判断语句结构:if(condition){}else{}
15.JS中的循环结构:for([initial expression];[condition];[upadte expression]) {inside loop}
16.循环中止的命令是:break
17.JS中的函数定义:function functionName([parameter],…){statement[s]}
18.当文件中出现多个form表单时.可以用document.forms[0],document.forms[1]来代替.
19.窗口:打开窗口window.open(), 关闭一个窗口:window.close(), 窗口本身:self
20.状?栏的设置:window.status=”字符”;
21.弹出提示信息:window.alert(“字符”);
22.弹出催认框:window.confirm();
23.弹出输入提示框:window.prompt();
24.指定当前显示链接的位置:window.location.href=”URL”
25.取出窗体中的所有表单的数量:document.forms.length
26.关闭文档的输出流:document.close();
27.字符串追加连接符: =
28.创建一个文档元素:document.createElement(),document.createTextNode()
29.得到元素的方法:document.getElementById()
30.设置表单中所有文本型的成员的值为空:
var form = window.document.forms[0]
for (var i = 0; i<form.elements.length;i ){
if (form.elements.type == “text”){
form.elements.value = “”;
}
}
31.复选按钮在JS中判断是否选中:document.forms[0].checkThis.checked (checked属性代表为是否选中返回TRUE或FALSE)
32.单选按钮组(单选按钮的名称必须相同):取单选按钮组的长度document.forms[0].groupName.length
33.单选按钮组判断是否被选中也是用checked.
34.下拉列表框的值:document.forms[0].selectName.options[n].value (n有时用下拉列表框名称加上.selectedIndex来催定被选中的值)
35.字符串的定义:var myString = new String(“This is lightsword”);
36.字符串转成大写:string.toUpperCase(); 字符串转成小写:string.toLowerCase();
37.返回字符串2在字符串1中出现的位置:String1.indexOf(“String2”)!=-1则说明没找到.
38.取字符串中指定位置的一个字符:StringA.charAt(9);
39.取出字符串中指定起点和终点的子字符串:stringA.substring(2,6);
40.数学函数:Math.PI(返回圆周率),Math.SQRT2(返回开方),Math.max(value1,value2)返回两个数中的最在值,Math.pow(value1,10)返回value1的十次方,Math.round(value1)四舍五入函数,Math.floor(Math.random()*(n 1))返回胗机数
41.定义日期型变量:var today = new Date();
42.日期函数列表:dateObj.getTime()得到时间,dateObj.getYear()得到年份,dateObj.getFullYear()得到四位的年份,dateObj.getMonth()得到月份,dateObj.getDate()得到日,dateObj.getDay()得到日期几,dateObj.getHours()得到小时,dateObj.getMinutes()得到分,dateObj.getSeconds()得到秒,dateObj.setTime(value)设置时间,dateObj.setYear(val)设置年,dateObj.setMonth(val)设置月,dateObj.setDate(val)设置日,dateObj.setDay(val)设置星期几,dateObj.setHours设置小时,dateObj.setMinutes(val)设置分,dateObj.setSeconds(val)设置秒 [注意:此日期时间从0开始计]
43.FRAME的表示方式: [window.]frames[n].ObjFuncVarName,frames[“frameName”].ObjFuncVarName,frameName.ObjFuncVarName
44.parent代表父亲对象,top代表最顶端对象
45.打开子窗口的父窗口为:opener
46.表示当前所属的位置:this
47.当在超链接中调用JS函数时用:(javascript :)来开头后面加函数名
48.在老的浏览器中不执行此JS:<!– //–>
49.引用一个文件式的JS:<script type=”text/javascript” src=”aaa.js”></script>
50.指定在不支持脚本的浏览器显示的HTML:<noscript></noscript>
51.当超链和onCLICK事件都有时,则老版本的浏览器转向a.html,否则转向b.html.例:<a href=”a.html” onclick=”location.href=’b.html’;return false”>dfsadf</a>
52.JS的?建对象有:Array,Boolean,Date,Error,EvalError,Function,Math,Number,Object,RangeError,ReferenceError,RegExp,String,SyntaxError,TypeError,URIError
53.JS中的换行:\n
54.窗口全屏大小:<script>function fullScreen(){ this.moveTo(0,0);this.outerWidth=screen.availWidth;this.outerHeight=screen.availHeight;}window.maximize=fullScreen;</script>
55.JS中的all代表其下层的全部元素
56.JS中的焦点顺序:document.getElementByid(“表单元素”).tabIndex = 1
57.innerHTML的值是表单元素的值:如<p id=”para”>”how are <em>you</em>”</p>,则innerHTML的值就是:how are <em>you</em>
58.innerTEXT的值和上面的一样,只不过不会把<em>这种?记显示出来.
59.contentEditable可设置元素是否可被修改,isContentEditable返回是否可修改的状?.
60.isDisabled判断是否为禁止状?.disabled设置禁止状?
61.length取得长度,返回整型数值
62.addBehavior()是一种JS调用的外部函数文件其扩展名为.htc
63.window.focus()使当前的窗口在所有窗口之前.
64.blur()指失去焦点.与FOCUS()相反.
65.select()指元素为选中状?.
66.防止用户对文本框中输入文本:onfocus=”this.blur()”
67.取出该元素在页面中出现的数量:document.all.tags(“P(或其它HTML?记符)”).length
68.JS中分为两种窗体输出:模?和非模?.window.showModaldialog(),window.showModeless()
69.状?栏文字的设置:window.status=’文字’,默认的状?栏文字设置:window.defaultStatus = ‘文字.’;
70.添加到收藏夹:external.AddFavorite(“http://www.webjx.com”;,”webjx”);
71.JS中遇到脚本错误时不做任何操作:window.onerror = doNothing; 指定错误句柄的语法为:window.onerror = handleError;
72.JS中指定当前打开窗口的父窗口:window.opener,支持opener.opener…的多重继续.
73.JS中的self指的是当前的窗口
74.JS中状?栏显示?容:window.status=”?容”
75.JS中的top指的是框架集中最顶层的框架
76.JS中关闭当前的窗口:window.close();
77.JS中提出是否催认的框:if(confirm(“Are you sure?”)){alert(“ok”);}else{alert(“Not Ok”);}
78.JS中的窗口重定向:window.navigate(http://www.webjx.com;);
79.JS中的打印:window.print()
80.JS中的提示输入框:window.prompt(“message”,”defaultReply”);
81.JS中的窗口滚动条:window.scroll(x,y)
82.JS中的窗口滚动到位置:window.scrollby
83.JS中设置时间间隔:setInterval(“expr”,msecDelay)或setInterval(funcRef,msecDelay)或setTimeout
84.JS中的模?显示在IE4 行,在NN中不行:showModalDialog(“URL”[,arguments][,features]);
85.JS中的退出之前使用的句柄:function verifyClose(){event.returnValue=”we really like you and hope you will stay longer.”;}} window.=verifyClose;
86.当窗体第一次调用时使用的文件句柄:onload()
87.当窗体关闭时调用的文件句柄:onunload()
88.window.location的属性: protocol(http:),hostname(www.webjx.com),port(80),host(www.example.com:80),pathname(“/a/a.html”),hash(“#giantGizmo”,指跳转到相应的锚记),href(全部的信息)
89.window.location.reload()刷新当前页面.
90.window.history.back()返回上一页,window.history.forward()返回下一页,window.history.go(返回第几页,也可以使用访问过的URL)
91.document.write()不换行的输出,document.writeln()换行输出
92.document.body.noWrap=true;防止链接文字折行.
93.变量名.charAt(第几位),取该变量的第几位的字符.
94.”abc”.charCodeAt(第几个),返回第几个字符的ASCii码值.
95.字符串连接:string.concat(string2),或用 =进行连接
96.变量.indexOf(“字符”,起始位置),返回第一个出现的位置(从0开始计算)
97.string.lastIndexOf(searchString[,startIndex])最后一次出现的位置.
98.string.match(regExpression),判断字符是否匹配.
99.string.replace(regExpression,replaceString)替换现有字符串.
100.string.split(分隔符)返回一个数组存储值.
101.string.substr(start[,length])取从第几位到指定长度的字符串.
102.string.toLowerCase()使字符串全部变为小写.
103.string.toUpperCase()使全部字符变为大写.
104.parseInt(string[,radix(代表进制)])强制转换成整型.
105.parseFloat(string[,radix])强制转换成浮点型.
106.isNaN(变量):测试是否为数值型.
107.定义常量的关键字:const,定义变量的关键字:var

]]>
//www.laura-marie.com/11454.html/feed 0
实现DIV圆角的JavaScript代码 //www.laura-marie.com/11071.html //www.laura-marie.com/11071.html#respond Sun, 18 Feb 2007 16:38:00 +0000 这个程序是个用来制作P圆角的开源javascript代码实现,效果和图像制作圆角一样的.它简单,易用,不用修改任何图像就能做到不同半径圆角….
用这个代码你可以自由定制自己的DIV,不再是方形了.完全可以实现圆形个性DIV

用法说明:

以下说明将以一个半径为20像素圆角的DIV为例.

实现div圆角的JavaScript代码.rar


解压您下载的文件, 上传到您的站点。然后复制代码如下和黏贴它入您的网页的顶头部分。如果您保存了文件到该网页目录外

的任何地方, 修正代码中的src值.
===代码:
< script type="text/javascript" src="rounded_corners.js"></script > 

——————————B
然后创造一个div。如果您已有div使用圆角,只要给这个div一个id就可以.
===代码:
         < div id="mydiv"></div >

——————————C
最后我们需要添加一段javascript来预载。在您的网页的顶头部分增加以下代码:

 

 

以下是引用片段:
<script type="text/javascript"> 

  window.onload = function()
  {
    settings = {
      tl: { radius: 20 },
      tr: { radius: 20 },
      bl: { radius: 20 },
      br: { radius: 20 },
      antiAlias: true,
      autoPad: false
    } 

    var PObj = document.getElementById("mydiv"); 

    var cornersObj = new curvyCorners(settings, divObj);
    cornersObj.applyCornersToAll();
  }

</script> 

 


======== 其中,radius表示半径,数值越大,圆角就越大.
————————————D
现在可以运行了.呵呵

———————————–PS:
*********如果你想搞成奇形怪状的圆角,你可以设置每个角都不同的半径.
例如:

 

以下是引用片段:
settings = {
      tl: { radius: 20 },
      tr: { radius: 40 },
      bl: { radius: 60 },
      br: { radius: 80 },
      antiAlias: true,
      autoPad: false
    }
或者:
settings = {
      tl: { radius: 20 },
      tr: false,
      bl: false,
      br: { radius: 80 },
      antiAlias: true,
      autoPad: false
    } 

 

提示: tl-左上角  tr=右上角  bl=左下角  br=右下角

]]>
//www.laura-marie.com/11071.html/feed 0
网页常用Javascript //www.laura-marie.com/10927.html //www.laura-marie.com/10927.html#respond Thu, 18 Jan 2007 07:13:00 +0000  

常用的网页特效收集起来做一个“大全”。

1.让文字不停地滚动

  <MARQUEE>滚动文字</MARQUEE>

2.记录并显示网页的最后修改时间

  <script language=Javascript>
  document.write(“最后更新时间: ” + document.lastModified + “”)
  </script>

3.关闭当前窗口

  <a href=”/”onClick=”javascript:window.close();return false;”>关闭窗口</a>

4.5秒后关闭当前页

  <script language=”Javascript”>
  <!–
  setTimeout(‘window.close();’,5000);
  –>
  </script>

5.2秒后载入指定网页

  <head>
  <meta http-equiv=”refresh” content=”2;URL=http://你的网址”>
  </head>

6.添加到收藏夹

  <script Language=”Javascript”>
  function bookmarkit()
  {
  window.external.addFavorite(‘http://你的网址’,’你的网站名称’)
  }
  if (document.all)document.write(‘<a href=”#” onClick=”bookmarkit()”>加入收藏夹</a>’)
  </script>

7.让超链接不显示下划线

  <style type=”text/css”>
  <!-
  a:link{text-decoration:none}
  a:hover{text-decoration:none}
  a:visited{text-decoration:none}
  ->
  </style>

8.禁止鼠标右键的动作

  <script Language = “Javascript”>
  function click() { if (event.button==2||event.button==3)
  {
  alert(‘禁止鼠标右键’);
  }
  document.onmousedown=click // –>
  </script>

9.设置该页为首页

  <body bgcolor=”#FFFFFF” text=”#000000″>
  <!– 网址:http://你的网址–>
  <a class=”chlnk” style=”cursor:hand” HREF
  onClick=”this.style.behavior=’url(#default#homepage)’;
  this.setHomePage(‘你的网站名称);”><font color=”000000″ size=”2″ face=”宋体”>设为首页</font></a>
  </body>

10.节日倒计时

  <script Language=”Javascript”>
  var timedate= new Date(“December 25,2003”);
  var times=”圣诞节”;
  var now = new Date();
  var date = timedate.getTime() – now.getTime();
  var time = Math.floor(date / (1000 * 60 * 60 * 24));
  if (time >= 0)
  document.write(“现在离”+times+”还有: “+time +”天”)</script>

11.单击按钮打印出当前页

  <script Language=”Javascript”>
  <!– Begin
  if (window.print) {
  document.write(‘<form>’
  + ‘<input type=button name=print value=”打印本页” ‘
  + ‘onClick=”javascript:window.print()”></form>’);
  }
  // End –>
  </script>

12.单击按钮‘另存为’当前页

  <input type=”button” name=”Button” value=”保存本页”
  onClick=”document.all.button.ExecWB(4,1)”>
  <object id=”button”
  width=0
  height=0
  classid=”CLSID:8856F961-340A-11D0-A96B-00C04FD705A2″>
  <embed width=”0″ height=”0″></embed>
  </object>

13.显示系统当前日期

  <script language=Javascript>
  today=new Date();
  function date(){
  this.length=date.arguments.length
  for(var i=0;i<this.length;i++)
  this[i+1]=date.arguments }
  var d=new date(“星期日”,”星期一”,”星期二”,”星期三”,”星期四”,”星期五”,”星期六”);
  document.write(
  ”<font color=##000000 style=’font-size:9pt;font-family: 宋体’> “,
  today.getYear(),”年”,today.getMonth()+1,”月”,today.getDate(),”日”,
  d[today.getDay()+1],”</font>” );
  </script>

14.不同时间段显示不同问候语

  <script Language=”Javascript”>
  <!–
  var text=””; day = new Date( ); time = day.getHours( );
  if (( time>=0) && (time < 7 ))
    text=”夜猫子,要注意身体哦! ”
  if (( time >= 7 ) && (time < 12))
    text=”今天天气……哈哈哈,不去玩吗?”
  if (( time >= 12) && (time < 14))
    text=”午休时间哦,朋友一定是不习惯午睡的吧?!”
  if (( time >=14) && (time < 18))
    text=”下午茶的时间到了,休息一下吧! ”
  if ((time >= 18) && (time <= 22))
    text=”您又来了,可别和MM聊太久哦!”
  if ((time >= 22) && (time < 24))
    text=”很晚了哦,注意休息呀!”
  document.write(text)
  //—>
  </script>

15.水中倒影效果

  <img id=”reflect” src=”你自己的图片文件名” width=”175″ height=”59″>
  <script language=”Javascript”>
  function f1()
  {
    setInterval(“mP.filters.wave.phase+=10”,100);
  }
  if (document.all)
  {
    document.write(‘<img id=mP src=”‘+document.all.reflect.src+'”
    style=”filter:wave(strength=3,freq=3,phase=0,lightstrength=30) blur() flipv()”>’)
    window.onload=f1
  }
  </script>

16.慢慢变大的窗口

  <script Language=”Javascript”>
  <!–
  var Windowsheight=100
  var Windowswidth=100
  var numx=5
  function openwindow(thelocation){
  temploc=thelocation
  if
  (!(window.resizeTo&&document.all)&&!(window.resizeTo&&document.getElementById))
  {
    window.open(thelocation)
    return
  }
  windowsize=window.open(“”,””,”scrollbars”)
  windowsize.moveTo(0,0)
  windowsize.resizeTo(100,100)
  tenumxt()
  }
  function tenumxt(){
  if (Windowsheight>=screen.availHeight-3)
    numx=0
  windowsize.resizeBy(5,numx)
  Windowsheight+=5
  Windowswidth+=5
  if (Windowswidth>=screen.width-5)
  {
    windowsize.location=temploc
    Windowsheight=100
    Windowswidth=100
    numx=5
    return
  }
  setTimeout(“tenumxt()”,50)
  }
  //–>
  </script>
  <p><a href=”javascript:openwindow(//www.laura-marie.com)”>进入</a>

17.改变IE地址栏的IE图标

  我们要先做一个16*16的icon(图标文件),保存为index.ico。把这个图标文件上传到根目录下并在首页<head></head>之间加上如下代码:

  <link REL = “Shortcut Icon” href=”index.ico”>  

]]>
//www.laura-marie.com/10927.html/feed 0
下拉菜单的简易制作 //www.laura-marie.com/10227.html //www.laura-marie.com/10227.html#respond Thu, 19 Oct 2006 08:33:00 +0000

对于如今热衷于网页设计的爱好者们来说,单调的网页效果已经远远不能满足他们新奇的心理了。本文就来介绍一种简单的下拉菜单的制作。只要你懂得一点点HTML的知识,就可以。即使什么也不懂,照葫芦画瓢也行,呵呵。

第一步,定义下拉菜单JS代码

<SCRIPT language=JavaScript>
<!–
function MM_findObj(n, d) { //v4.01
var p,i,x; if(!d) d=document; if((p=n.indexOf(“?”))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function MM_showHideLayers() { //v6.0
var i,p,v,obj,args=MM_showHideLayers.arguments;
for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
if (obj.style) { obj=obj.style; v=(v==show)?visible:(v==hide)?hidden:v; }
obj.visibility=v; }
}
//–>
</SCRIPT>

第二步,在适当的位置插入目录菜单

<TABLE borderColor=#ffffff height=25 width=150 align=left bgColor=#cccccc border=1 >
<TBODY> <TR>
<TD
onmouseover=”MM_showHideLayers(Layer2,,hide,Layer1,,show)”
borderColorLight=#000000 width=100 bgColor=#ccccff height=15>
<DIV align=center><A
onclick=”MM_showHideLayers(Layer2,,hide,Layer1,,show)”
href=”2#”>网上书店</A></DIV></TD>
<TD
onmouseover=”MM_showHideLayers(Layer2,,show,Layer1,,hide)”
borderColorLight=#000000 width=100 bgColor=#ccccff height=15>
<DIV align=center><A
onclick=”MM_showHideLayers(Layer2,,show,Layer1,,hide)”
href=”1#”>书盘目录</A></DIV></TD>
</TR>
</TBODY>
</TABLE>

第三步,插入隐藏层的定义.

<DIV id=Layer1 style=”Z-INDEX: 1; VISIBILITY: hidden; POSITION: absolute; TOP: 42px; LEFT: 12px; WIDTH: 88px; HEIGHT: 163px”

<TABLE borderColor=#ffffff bgColor=#ccccff borderColorLight=#000000 border=1 onmouseover=”MM_showHideLayers
(Layer1,,show)” onmouseout=”MM_showHideLayers(Layer1,,hide)”>
<TBODY>
<TR>
<TD height=15>
<DIV align=center><A href=”A#”>最新图书</A></DIV></TD></TR>
<TR>
<TD height=15>
<DIV align=center><A href=”S#”>热点图书</A></DIV></TD></TR>
<TR>
<TD height=15>
<DIV align=center><A href=”D#”>隆重推出</A></DIV></TD></TR>
</TBODY></TABLE>
</DIV>
<DIV id=Layer2 style=”Z-INDEX: 1; VISIBILITY: hidden; POSITION: absolute; TOP: 42px; LEFT: 85px; WIDTH: 120px; HEIGHT: 127px”

<TABLE borderColor=#ffffff bgColor=#ccccFF borderColorLight=#000000 border=1 onmouseover=”MM_showHideLayers
(Layer2,,show)” onmouseout=”MM_showHideLayers(Layer2,,hide)”>
<TBODY>
<TR>
<TD height=15>
<DIV align=center><A
href=”F#”>总目录</A></DIV></TD></TR>
<TR>
<TD height=15>
<DIV align=center><A
href=”G#”>图书目录</A></DIV></TD></TR>
</TBODY></TABLE>
</DIV>

到这里,你就可以看到一个完整的下拉菜单的网页特效了。

]]>
//www.laura-marie.com/10227.html/feed 0
JS的IE和Firefox兼容性集锦 //www.laura-marie.com/10226.html //www.laura-marie.com/10226.html#respond Thu, 19 Oct 2006 08:31:00 +0000

  以下以 IE 代替 Internet Explorer,以 MF 代替 Mozzila Firefox

  1. document.form.item 问题

  (1)现有问题:

  现有代码中存在许多 document.formName.item(“itemName”) 这样的语句,不能在 MF 下运行

  (2)解决方法:

  改用 document.formName.elements[“elementName”]

  (3)其它

  参见 2

  2. 集合类对象问题

  (1)现有问题:

  现有代码中许多集合类对象取用时使用 (),IE 能接受,MF 不能。

  (2)解决方法:

  改用 [] 作为下标运算。如:document.forms(“formName”) 改为 document.forms[“formName”]。

  又如:document.getElementsByName(“inputName”)(1) 改为 document.getElementsByName(“inputName”)[1]

  (3)其它

  3. window.event

  (1)现有问题:

  使用 window.event 无法在 MF 上运行

  (2)解决方法:

  MF 的 event 只能在事件发生的现场使用,此问题暂无法解决。可以这样变通:

  原代码(可在IE中运行):

<input type=”button” name=”someButton” value=”提交” onclick=”javascript:gotoSubmit()”/>

<script language=”javascript”>
function gotoSubmit() {

alert(window.event);    // use window.event

}
</script>

  新代码(可在IE和MF中运行):

<input type=”button” name=”someButton” value=”提交” onclick=”javascript:gotoSubmit(event)”/>

<script language=”javascript”>
function gotoSubmit(evt) {
evt = evt ? evt : (window.event ? window.event : null);

alert(evt);             // use evt

}
</script>

  此外,如果新代码中第一行不改,与老代码一样的话(即 gotoSubmit 调用没有给参数),则仍然只能在IE中运行,但不会出错。所以,这种方案 tpl 部分仍与老代码兼容。

  4. HTML 对象的 id 作为对象名的问题

  (1)现有问题

  在 IE 中,HTML 对象的 ID 可以作为 document 的下属对象变量名直接使用。在 MF 中不能。

  (2)解决方法

  用 getElementById(“idName”) 代替 idName 作为对象变量使用。

  5. 用idName字符串取得对象的问题

  (1)现有问题

  在IE中,利用 eval(idName) 可以取得 id 为 idName 的 HTML 对象,在MF 中不能。

  (2)解决方法

  用 getElementById(idName) 代替 eval(idName)。

  6. 变量名与某 HTML 对象 id 相同的问题

  (1)现有问题

  在 MF 中,因为对象 id 不作为 HTML 对象的名称,所以可以使用与 HTML 对象 id 相同的变量名,IE 中不能。

  (2)解决方法

  在声明变量时,一律加上 var ,以避免歧义,这样在 IE 中亦可正常运行。

  此外,最好不要取与 HTML 对象 id 相同的变量名,以减少错误。

  (3)其它

  参见 问题4

  7. event.x 与 event.y 问题

  (1)现有问题

  在IE 中,event 对象有 x, y 属性,MF中没有。

  (2)解决方法

  在MF中,与event.x 等效的是 event.pageX。但event.pageX IE中没有。

  故采用 event.clientX 代替 event.x。在IE 中也有这个变量。

  event.clientX 与 event.pageX 有微妙的差别(当整个页面有滚动条的时候),不过大多数时候是等效的。

  如果要完全一样,可以稍麻烦些:

  mX = event.x ? event.x : event.pageX;

  然后用 mX 代替 event.x

  (3)其它

  event.layerX 在 IE 与 MF 中都有,具体意义有无差别尚未试验。

  8. 关于frame

  (1)现有问题

  在 IE中 可以用window.testFrame取得该frame,mf中不行

  (2)解决方法

  在frame的使用方面mf和ie的最主要的区别是:

  如果在frame标签中书写了以下属性:

  <frame src=”xx.htm” id=”frameId” name=”frameName” />

  那么ie可以通过id或者name访问这个frame对应的window对象

  而mf只可以通过name来访问这个frame对应的window对象

  例如如果上述frame标签写在最上层的window里面的htm里面,那么可以这样访问

  ie: window.top.frameId或者window.top.frameName来访问这个window对象

  mf: 只能这样window.top.frameName来访问这个window对象

  另外,在mf和ie中都可以使用window.top.document.getElementById(“frameId”)来访问frame标签

  并且可以通过window.top.document.getElementById(“testFrame”).src = ‘xx.htm’来切换frame的内容

  也都可以通过window.top.frameName.location = ‘xx.htm’来切换frame的内容

  关于frame和window的描述可以参见bbs的‘window与frame’文章

  以及/test/js/test_frame/目录下面的测试

  —-adun 2004.12.09修改

  9. 在mf中,自己定义的属性必须getAttribute()取得

  10.在mf中没有 parentElement parement.children 而用

  parentNode parentNode.childNodes

  childNodes的下标的含义在IE和MF中不同,MF使用DOM规范,childNodes中会插入空白文本节点。

  一般可以通过node.getElementsByTagName()来回避这个问题。

  当html中节点缺失时,IE和MF对parentNode的解释不同,例如

  <form>
  <table>
  <input/>
  </table>
  </form>

  MF中input.parentNode的值为form, 而IE中input.parentNode的值为空节点

  MF中节点没有removeNode方法,必须使用如下方法 node.parentNode.removeChild(node)

  11.const 问题

  (1)现有问题:

  在 IE 中不能使用 const 关键字。如 const constVar = 32; 在IE中这是语法错误。

  (2)解决方法:

  不使用 const ,以 var 代替。

  12. body 对象

  MF的body在body标签没有被浏览器完全读入之前就存在,而IE则必须在body完全被读入之后才存在

  13. url encoding

  在js中如果书写url就直接写&不要写&例如var url = ‘xx.jsp?objectName=xx&objectEvent=xxx’;

  frm.action = url那么很有可能url不会被正常显示以至于参数没有正确的传到服务器

  一般会服务器报错参数没有找到

  当然如果是在tpl中例外,因为tpl中符合xml规范,要求&书写为&

  一般MF无法识别js中的&

  14. nodeName 和 tagName 问题

  (1)现有问题:

  在MF中,所有节点均有 nodeName 值,但 textNode 没有 tagName 值。在 IE 中,nodeName 的使用好象

  有问题(具体情况没有测试,但我的IE已经死了好几次)。

  (2)解决方法:

  使用 tagName,但应检测其是否为空。

  15. 元素属性

  IE下 input.type属性为只读,但是MF下可以修改

  16. document.getElementsByName() 和 document.all[name] 的问题

  (1)现有问题:

  在 IE 中,getElementsByName()、document.all[name] 均不能用来取得 P 元素(是否还有其它不能取的元素还不知道)。

]]>
//www.laura-marie.com/10226.html/feed 0