亲爱的 GUI 博士:
我有一个关于 XML 的问题。我通过 XMLHTTP 发布一个 ASP 页面,将数据作为 HTML 发送回来,并在 div、表格单元格或任何元素上执行 object.innerHTML。
我遇到的问题是,有一次,我在 ASP 服务器页上创建一个表单,并将该表单以 HTML 发送回去,这样做一切正常。但我还希望对该页面进行客户端验证,因此我将一个 JScript 页面链接放到了我打算发送回去的响应 HTML 的正文中。这样做以后,脚本就无法运行了。
当我在父页上包括实际的 JScript src 引用时,它可以正常运行。这是因为 JScript 代码没有加载到运行库吗?能否在响应 XMLHTTP post 时不返回 JScript 代码并...
javascript 有一些保留字不能在标识符中使用。保留字对 javascript 语言有特殊的含义,它们是语言语法的一部分。使用保留字在加载脚本的时候将产生编译错误。
javascript 还有一些留作将来使用的保留字。这些字不是现在的 javascript 语言的一部分,然而它们是为将来的使用保留的。
保留词
break
delete
function
return
typeof
case
do
if
switch
var
catch
else
in
this
...
在javascript的众多运算符里,提供了三个逻辑运算符&&、||和!,噢?! 是高级语言都提供的。按我们对逻辑运算的正常认识,逻辑运算的结果因该是ture或者false。但是javascript的逻辑运算却不完全是这么定义的,这里只有!运算符总是返回true|false,而||和&&运算比较的好玩。
javascript对于逻辑运算的true|false是这么定义的:
所有对象都被认为是 true。
字符串当且仅当为空(""或'')时才被认为是 false。
null 和未定义的均被认为是 false。
数字当且仅当为 0 时才是 false。
可是逻辑运算符||和&&虽然遵循上面的定义规则,但是它们返回的值却很有意思。
对于&&运算,按照上面的规...
作为一名网站开发WEB前端工程师,对自己开发的网站项目应该尽可能地对其性能进行优化,现在互联网上搜索到的网站性能优化多是翻译转载自Yahoo14条或34条。Yahoo的优化建议关注在大的方面,下面,W3C Group为大家呈现WEB前端开发高性能优化部分之JavaScript的优化细节!
一、避免出现脚本失控
不论什么脚本,在任何时间、任何浏览器上执行,都不应该超过100毫秒。如果实际执行的时间长于这个底限,一定要将进程分解成若干更小的代码段。
脚本失控基本上有以下四个方面的原因:
1. 在循环中执行了太多的操作
解决这个问题的诀窍就是用下面这两个问题来评估每个循环:
这个循环必须要同步执行么?
循环里面的数据,必...
描述
语言要素
返回在模式匹配中找到的最近的九条记录。
$1...$9 属性
返回一个数的绝对值。
abs 方法
返回一个数的反余弦。
acos 方法
启用并返回一个 Automation 对象的引用。
ActiveXObject 对象
将两个数相加或连接两个字符串。
加法运算符(+)
在对象的指定文本两端加上一个带 NAME 属性的...
Jscript 脚本中的语句一般是按照写的顺序来运行的。这种运行称为顺序运行,是程序流的默认方向。
与顺序运行不同,另一种运行将程序流转换到脚本的另外的部分。也就是,不按顺序运行下一条语句,而是运行另外的语句。
要使脚本可用,该控制的转换必须以逻辑方式执行。程序控制的转换是基于一个“决定”,这个“决定”结果是真或假(返回 Boolean 型 true 或 false)。 创建一个表达式,然后测试其是否为真。主要有两种程序结构实现本功能。
第一种是选择结构。用来指明两种程序流方向,在程序中创建一个交叉点(像岔路)。在 Jscript 中有四种选择结构可用。
单一选择结构(if),
二路选择结构(if/el...
Microsoft Jscript 提供了 11 个内部(或“内置”)对象。它们是Array、Boolean、Date、Function、Global、Math、Number、Object、RegExp、Error 以及 String 对象。每一个对象有相关的方法和属性,这在语言参考中有详细的描述。本节中也描述了某些对象。
Array 对象
数组下标可以被认为是对象的属性,它是通过数字索引来引用的。注意添加到数组中的已命名的属性不能通过数字来索引;它们是与数组元素分离的。
使用 new 运算符和 Array() 构造器 生成一个新的数组,如下面的示例。
以下为引用的内容: var theMonths = new Array(12);
theMonths[0] = "Jan";
theMonths[1] = &qu...
使用构造函数来创建对象
构造函数是一个函数,调用它来例示并初始化特殊类型的对象。可以使用 new 关键字来调用一个构造函数。下面给出了使用构造函数的新示例。
以下为引用的内容: var myObject = new Object(); // 创建没有属性的通用对象。
var myBirthday = new Date(1961, 5, 10); // 创建一个 Date 对象。
var myCar = new Car(); // 创建一个用户定义的对象,并初始化其属性。 通过构造函数将一个参数作为特定的 this 关键字的值传递给新创建的空对象。然后构造函数负责为新对象执行适应的初始化(创建属性并给出其初始值)。完成后,构造函数返回它所构造的对象的一个参数。
编写...
递归是一种重要的编程技术。该方法用于让一个函数从其内部调用其自身。一个示例就是计算阶乘。0 的阶乘被特别地定义为 1。 更大数的阶乘是通过计算 1 * 2 * ...来求得的,每次增加 1,直至达到要计算其阶乘的那个数。
下面的段落是用文字定义的计算阶乘的一个函数。
“如果这个数小于零,则拒绝接收。如果不是一个整数,则将其向下舍入为相邻的整数。如果这个数为 0,则其阶乘为 1。如果这个数大于 0,则将其与相邻较小的数的阶乘相乘。”
要计算任何大于 0 的数的阶乘,至少需要计算一个其他数的阶乘。用来实现这个功能的函数就是已经位于其中的函数;该函数在执行当前的这个数之前,必须调用它本身来计算相邻的较...
JScript 有两种变量范围:全局和局部。如果在任何函数定义之外声明了一个变量,则该变量为全局变量,且该变量的值在整个持续范围内都可以访问和修改。如果在函数定义内声明了一个变量,则该变量为局部变量。每次执行该函数时都会创建和破坏该变量;且它不能被该函数外的任何事物访问。
像 C++ 这样的语言也有“块范围”。在这里,任何一对“{}”都定义新的范围。JScript 不支持块范围。
一个局部变量的名称可以与某个全局变量的名称相同,但这是完全不同和独立的两个变量。因此,更改一个变量的值不会影响另一个变量的值。在声明局部变量的函数内,只有该局部变量有意义
以下是Javascript代码:【复制...
复制、传递和比较数据
在 JScript 中,对数据的处理取决于该数据的类型。
按值和按引用的比较
Numbers 和 Boolean 类型的值 (true 和 false) 是按值来复制、传递和比较的。当按值复制或传递时,将在计算机内存中分配一块空间并将原值复制到其中。然后,即使更改原来的值,也不会影响所复制的值(反过来也一样),因为这两个值是独立的实体。
对象、数组以及函数是按引用来复制、传递和比较的。 当按地址复制或传递时,实际是创建一个指向原始项的指针,然后就像拷贝一样来使用该指针。如果随后更改原始项,则将同时更改原始项和复制项(反过来也一样)。实际上只有一个实体;“复本”并不是一个真正的复本...
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script language="javascript">
var theP; //P标签对象
var show=function(msg){ //直接定义 function show(msg) 效果是一样的
return function(){
alert(msg+" f...
JScript 中的数组是稀疏的。也就是说,如果一个数组具有三个元素,编号分别为 0、1 和 2,您就可以创建元素 50,而不必担心从 3 到 49 的参数。如果该数组有一个自动的 length 变量,(请参阅内部对象了解有关数组长度的自动监控的说明),该 length 变量被设为 51,而不是 4。当然您可以创建各元素的编号之间没有间隙的数组,不过没有必要这样做。
在 JScript 中,对象和数组几乎相同。两个主要差别是对象没有自动长度属性,而数组没有对象的属性和方法。
数组寻址
使用方括号“[]”来寻址数组。方括号中是一个数值或一个值为整数的表达式。下面的示例假定在脚本的其他地方已定义了entryNum 变量,且已赋值。...
JScript 提供了一些特殊字符,允许在字符串中包括一些无法直接键入的字符。每个字符都以反斜杠开始。反斜杠是一个转义字符,表示 JScript 解释器下面的字符为特殊字符。
转义序列 字符
b 退格
f 走纸换页
n 换行
r 回车
t 横向跳格 (Ctrl-I)
' 单引号
" 双引号
反斜杠
请注意,由于反斜杠本身用作转义符,因此不能直接在脚本中键入一个反斜杠。如果要产生一个反斜杠,必须一起键入两个反斜杠 ()。
document.write('The image path is C:webstuffmypagegifsgarden.gif.');
document.write('The caption reads, "After the snow of '97. Grandma's house is covered."');...
如果不够细致,任何编程语言都有一些可能发生错误的地方,而且每种语言都有其特殊之处。例如,对于 null 值: JScript 中这个值与 C 或 C++ 语言中的 Null 值所起的作用是不一样的。
下面提供了一些在编写 JScript 脚本时可能遇到的问题。
语法错误
由于编程语言中的语法比自然语言的语法要严格得多,因此在编写脚本时对细节应倍加关注。例如,如果您本意是将字符串作为某个参数,但是在键入时忘了使用引号引起来,就会产生问题。
脚本解释顺序
对 JScript 的解释是 Web 浏览器的 HTML 语法分析处理的一部分。因此,如果在文档的 <HEAD> 标识中放置了一个脚本,则将在检查所有...
使用条件编译可以使用 Jscript 语言的新特性并且与不支持该特性的老版本兼容。
用 @cc_on 语句、@if 或 @set 语句来激活条件编译。条件编译的某些典型用途包括使用 Jscript 中的新特性、在脚本中嵌入调试支持以及跟踪代码的运行。
一般将条件编译代码放在注释中,所以不能理解条件编译的宿主(如 Netscape Navigator)就忽略了条件编译。下面是一个示例。
/*@cc_on @*/
/*@if (@_jscript_version >= 4)
alert("JScript version 4 or better");
@else @*/
alert("You need a more recent script engine.");
/*@end @*/
本示例使用了特殊的注释分隔符,该分隔符只有在 @c...