`
7wolfs
  • 浏览: 178453 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

JavaScript 笔记

阅读更多
8. JavaScript 中 this 的含义
函数中的this
当函数被调用时,函数中的this指向函数的调用者。函数属于某个对象,当通过该对象对这个函数进行调用时,函数中的this指向该对象。
比如jQuery的对象构造方法中的下面这条语句:
return new jQuery.fn.init( selector, context, rootjQuery );
init方法是jQuery.fn这个对象的方法,它被调用时,init中的this就指向jQuery.fn这个对象。

7. JavaScript 中 attachEvent和addEventListener的区别
document.addEventListener
是针对Mozilla, Opera 等浏览器。它的调用形式如下:
document.addEventListener( "click", method01, false );
第三个参数是useCapture,是一个boolean值;如果是true,表示让浏览器使用Capture方式,false的话是Bubbling,建议使用false,受影响的情形是目标元素(target element)有祖先元素(ancestor element),而且也有同样事件的对应函数。
可以往同一个dom元素的同一个事件里加入若干个方法,按照加入的顺序,最先加入的方法先执行。

document.attachEvent
是针对IE 浏览器。调用形式如下:
window.attachEvent( "onload", method);
可以往同一个dom元素的同一个事件里加入若干个方法,按照加入的顺序,最后加入的方法先执行。

6. JavaScript 手册(CoreGuideJS14.pdf)阅读笔记
逻辑运算符:参见附件(CoreGuideJS14.pdf)中的Chapter 3, Expressions and Operators, page 45.

比较运算符:参见附件(CoreGuideJS14.pdf)中的Chapter 3, Expressions and Operators, page 41.

5. javascript中的括号用法
(function(){})();

针对上面的这句代码,前面的()就是一个求值,括号内的值类型是function。 js里面函数也是变量。 函数变量后面加括号,当然就是执行函数了。按照ecma 3.0规范,函数也是一个对象,而“()”(写在函数后面)则是运算符,表示“执行”。

4. 两个方法出现同名时并都被加载到页面时,在不带iframe的tab页切换时,会引起方法调用混乱。

3. 两个HTML页面之间的传值
引用


两个HTML页面之间的传值(通过截取url获得)


假如有两个页面分别是m.html和n.html。
m.html代码如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<SCRIPT LANGUAGE="JavaScript">
    function test(){
        var s = document.getElementById("txt");
        location.href="n.html?"+"txt="+s.value;
    }
</SCRIPT>
</HEAD>

<BODY>
<input type="text" id="txt">
</br>
<input type="button" value="TEST" onclick="test()"/>
</BODY>
</HTML>
n.html代码如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<SCRIPT LANGUAGE="JavaScript">

function getvalue(name){
    var str=window.location.search;   //location.search是从当前URL的?号开始的字符串
                                                                例如:http://www.51job.com/viewthread.jsp?tid=22720
                                                                它的search就是?tid=22720
    if (str.indexOf(name)!=-1){          
        var pos_start=str.indexOf(name)+name.length+1;
        var pos_end=str.indexOf("&",pos_start);
        if (pos_end==-1){
            alert( str.substring(pos_start));
        }else{
            alert("对不起这个值不存在!");
        }
    }

</SCRIPT>
</HEAD>

<BODY>
<input type="button" onclick="getvalue('txt')" value="GO-GetValue"/>
</BODY>
</HTML>
这个方法可以取到,但是目前为止,个人觉得还不是很好的方法。要是俩个页面有例如父子关系,还是比较好取。有时间这两天我会继续的关注这个问题的。



2.<a href='javascript:function()'>的含义
引用

这样写是为了让这个链接不要链接到新页面转而执行一段js代码。
和onclick能起到同样的效果,一般来说,如果要调用脚本还是在onclick事件里面写代码,而不推荐在href='javascript:function()' 这样的写法,因为 href 属性里面设置了js代码后,在某些浏览器下可能会引发其他不必要的事件。造成非预期效果。

而且 onclick事件会比 href属性先执行,所以会先触发 onclick 然后触发href,所以如果不想页面跳转,可以设置 onclick里面的js代码执行到最后返回一个false,这样 href 里面的东西就不会执行了。(注:在js代码里加了false的返回值,依然会执行href的动作。此处有歧义。)

在ajax应用程序中,多写着下面的这样 ,以表示这个链接不跳转,而执行一段js脚本。
<a href="javascript:void(0);" onclick="function()"></a>
或者 <a href="javascript:;" onclick="function()"></a>
(注:该写法可以生效。)

void(0) 只是用来计算一个空值,其实也是什么事情都不做,
而分号“;”则表示是一个空的js语句,这样就不会有任何其他跳转发生了,

而且W3C标准不推荐在href里面执行javascript语句,所以还是用 onclick事件触发吧


1. JS 处理文件浏览器
需要在IE中打开安全设置,设置非安全activeX为可用。
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>JS实现打开文件夹对话框</title>
</head>

<script language="javascript">
function chooseFolder(){
var savePath;
var objSrc=new ActiveXObject("Shell.Application").BrowseForFolder(0,'请选择文件目录:',0,'');
if(objSrc!=null){
savePath=objSrc.Self.Path;
document.getElementsByName("savePath")[0].value=savePath;
}
}
</script>
<body>
<input type="text" size="30" name="savePath"/>
<input type="button" name="chosefolderbutton" value="选择" onclick="chooseFolder()"/>
<input type=button value=选择路径 onclick="window.confirm(BrowseFolder())"> 
<input type="file" id="f">

alert(document.getElementById("f").value);//打印路径
<script> 
function BrowseFolder() 
{ 
var Message="请选择文件夹"; 
var Shell=new ActiveXObject("Shell.Application"); 
var Folder=Shell.BrowseForFolder(0,Message,0x0040,0x11); 
if(Folder!=null) 
{ 
Folder=Folder.items();//返回FolderItems对象 
Folder=Folder.item();//返回Folderitem对象 
Folder=Folder.Path;//返回路径 
if(Folder.charAt(Folder.length-1)!="\\") 
{ 
Folder=Folder+"\\"; 
} 
return Folder; 
} 
} 
</script> 
  </body>
  </html>

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics