11
28
2008
1

[JavaScript]程序触发点击事件

function doClick(obj){
    if (document.createEvent){//火狐写法
        var evObj = document.createEvent('MouseEvents');
        evObj.initEvent( 'click', true, false );
        obj.dispatchEvent(evObj);
    }else{//ie写法
        obj.click();
    }
}

ie比较简单,但不规范,火狐代码多一点,但是规规矩矩

但是似乎`

Category: JavaScript | Tags: javascript 鼠标点击
11
25
2008
0

[javascript]删除div的方法

方法一:div.removeNode(true);//火狐不支持

方法二:div.parentNode.removeChild(div);//IE火狐都支持

此方法也可以用来删除别的标签

Category: JavaScript | Tags: 删除div
11
25
2008
0

[javascript]IE,火狐兼容捕捉按键事件

按键兼容 

<script type="text/javascript">   
document.onkeydown=kp;   
function kp(e){
    if(!e)var e=window.event;
    var kc=e.which||e.keyCode;
        switch(kc){   
            case 13: alert('carriage return'); break;   
            case 27: self.opener=null;self.close(); break;   
        }
}
</script>
Category: JavaScript | Tags: javascript onkeypress
9
22
2008
1

[JAVASCRIPT]动态onclick的参数问题

在动态生成一个对象的onclick事件时我们都是这样写

element.onclick=functionName;

例:a.onclick=set(a);

这样写法参数是无法传递的

而且有自动被执行的问题(不自动执行可以这样写:a.onclick=set,只写方法名)

找到了一个小方法解决了问题

element.onclick=function() {
    functionName(param);
};

例:

a.onclick=function(){
    set(a);
}

但是又遇到一个问题,当参数时动态变化时,比如上例中a要是在循环中动态改变的,会出现每次循环a的值都是最后一次的值

后来查到另外一种写法据说叫做闭包?

a.onclick = (
function(param){
    return function(){
        set(param);
    }
})(param)

解决了这个问题

Category: JavaScript | Tags: 闭包 动态参数
8
24
2008
1

[javascript]文本框强制输入数字

<script language="javascript">
function myKeyDown(e){
        if(window.event){//IE
                var k = e.keyCode;
                if ((k == 13)||(k == 9) || (k == 35) || (k == 36) || (k == 8) || (k == 46) || (k >= 48 && k <=57 )||( k >= 96 && k <= 105)||(k >= 37 && k <= 40)){
                }else{
                        window.event.returnValue = false;
                }
        }else{//火狐
                var k = e.which;
                if ((k == 13)||(k == 9) || (k == 35) || (k == 36) || (k == 8) || (k == 46) || ( k>= 48 && k <= 57)||(k >= 96 && k <= 105)||(k >= 37 && k <= 40)){
                }else{
                        e.preventDefault();
                }
        }
}
</script>

<input style="ime-mode:disabled" maxlength="10" onkeydown="myKeyDown(event);"/>

style="ime-mode:disabled" 禁止切换输入法

附上keycode表

字母和数字键的键码值(keyCode)
按键 键码 按键 键码 按键 键码 按键 键码

A

65 J 74 S 83 1 49
B 66 K 75 T 84 2 50
C 67 L 76 U 85 3 51
D 68 M 77 V 86 4 52
E 69 N 78 W 87 5 53
F 70 O 79 X 88 6 54
G 71 P 80 Y 89 7 55
H 72 Q 81 Z 90 8 56
I 73 R 82 0 48 9 57

    

数字键盘上的键的键码值(keyCode) 功能键键码值(keyCode)
按键 键码 按键 键码 按键 键码 按键 键码

0

96 8 104 F1 112 F7 118
1 97 9 105 F2 113 F8 119
2 98 * 106 F3 114 F9 120
3 99 + 107 F4 115 F10 121
4 100 Enter 108 F5 116 F11 122
5 101 - 109 F6 117 F12 123
6 102

  .

110            
7

  103

/ 111         

    

控制键键码值(keyCode)
按键 键码 按键 键码 按键 键码 按键 键码
BackSpace 8 Esc 27 Right Arrow 39 -_ 189
Tab 9 Spacebar 32 Down Arrow 40 .> 190
Clear 12 Page Up 33 Insert 45 /? 191
Enter 13 Page Down 34 Delete 46 `~ 192
Shift 16 End 35 Num Lock 144 [{ 219
Control 17 Home 36 ;: 186 \| 220
Alt 18 Left Arrow 37 =+ 187 ]} 221
Cape Lock 20 Up Arrow 38 ,< 188 '" 222

Category: JavaScript | Tags: javascript
8
5
2008
0

[JavaScript]IE不支持getElementsByName的解决方法

今天做一个页面,一直在firefox上面测试,等到终于完工了,想起到IE上跑一遍试试

一跑问题就出来了

找到原因问题出在getElementsByName这个方法上

IE无法使用getElementsByName只能用getElementsByTagName

于是只好加上了一个方法

function getElementsByName(tag,eltname){
    var elts=document.getElementsByTagName(tag);
    var count=0;
    var elements=[];
    for(var i=0;i<elts.length;i++){
        if(elts[i].getAttribute("name")==eltname){
            elements[count++]=elts[i];
        }
    }
    return elements;
}

还好改动不是特别大  加上这个方法就解决问题了
(改掉原先使用document.getElementsByName的地方为getElementsByName)

还是有点怪怪的

Category: JavaScript | Tags: javascript
8
1
2008
2

[Ajax]Ajax readyState的几种状态

0: (Uninitialized) the send( ) method has not yet been invoked.
1: (Loading) the send( ) method has been invoked, request in progress.
2: (Loaded) the send( ) method has completed, entire response received.
3: (Interactive) the response is being parsed.
4: (Completed) the response has been parsed, is ready for harvesting.

0 - (未初始化)还没有调用send()方法
1 - (载入)已调用send()方法,正在发送请求
2 - (载入完成)send()方法执行完成,已经接收到全部响应内容
3 - (交互)正在解析响应内容
4 - (完成)响应内容解析完成,可以在客户端调用了

 

readyState Status Code

Status of the XMLHttpRequest Object

(0) UNINITIALIZED
未初始化

The object has been created but not initialized. (The open method has not been called.)
(XMLHttpRequest)对象已经创建,但尚未初始化(还没有调用open方法)。

(1) LOADING
载入

The object has been created, but the send method has not been called.
(XMLHttpRequest)对象已经创建,但尚未调用send方法。

(2) LOADED
载入完成

The send method has been called, but the status and headers are not yet available.
已经调用send方法,(HTTP响应)状态及头部还不可用。

(3) INTERACTIVE
交互

Some data has been received. Calling the responseBody and responseText properties at this state to obtain partial results will return an error, because status and response headers are not fully available.
已经接收部分数据。但若在此时调用responseBody和responseText属性获取部分结果将会产生错误,因为状态和响应头部还不完全可用。

(4) COMPLETED
完成

All the data has been received, and the complete data is available in the responseBody and responseText properties.
已经接收到了全部数据,并且在responseBody和responseText属性中可以提取到完整的数据。

 

比如在点完保存以后显示正在保存的状态时应该判断readyState == 2的时候,执行显示的状态

Category: JavaScript | Tags: php ajax
7
24
2008
2

[JavaScript]一个全局变量不能用的问题

今天写了一段JavaScript的代码让我很奇怪

<html>
<head>
<script language="javascript">
var userName = document.getElementById('username');
function foo(){
    alert(userName.value);
    return false;
}
</script>
</head>
<body>
<form action="a.php" method="POST" onsubmit="return foo();">
<input type="text" name='username' id='username' />
<input type="submit" value="提交">
</form>
</body>
</html>

点击提交时应该弹出userName的值,但这段代码弹的值却是null

查了半天谷歌终于找到了原因

"放在对应的id后面就可以了。虽然你的userName 是全局变量,但是如果你放在获取dom的前面的话,获得到的值就是null。"

恍然大悟,于是把代码修改了一下 将script代码放到了</body>下面,马上可以用了,ie,FireFox都没问题

<html>
<head>
</head>
<body>
<form action="a.php" method="POST" onsubmit="return foo();">
<input type="text" name='username' id='username' />
<input type="submit" value="提交">
</form>
</body>
<script language="javascript">
var userName = document.getElementById('username');
function foo(){
    alert(userName.value);
    return false;
}
</script>
</html>

那个人还有一个建议"但做法还是建议在执行操作时临时获得对象,如果放在body后面的话对资源是浪费的。"

这句话我还需要理解理解,呵呵,毕竟还是JavaScript的新手嘛

Category: JavaScript | Tags: javascript 全局变量

Host by is-Programmer.com | Power by Chito 1.3.3 beta | Theme: Aeros 2.0 by TheBuckmaker.com