12个提高JavaScript实用技巧

来源:互联网 发布:手机淘宝强制拍摄脸部 编辑:程序博客网 时间:2024/04/29 23:45

1根据索引移除数组中的某个元素

    假如需要从JavaScript数组中移除某个元素,可以使用splice方法,该方法将根据传入参数n,移除数组中移除第n个元素

   Function  removeByIndex(arr,index)

{

  arr.splice(index,1);

 

}

   test=new Arry();

     test[0]='Apple';

     test[1]='Ball';

     test[2]='Cat';

     test[3]='Dog';

  alert("Array Before  removing  elements:"+test);

        removeByIndex(test,2);

     Alert("Arry After removing elemrnts"+test);

 

  2  根据元素的值移除数组中的值

        function removeByValue(arr, val)

  {

         for(var i=0;i<arr.length;i++)

  {

        if(arr[i]==val)

{

  arr.splice(i,1);

  break;

}

 }

  } 

       var  somearray=["moon","tue","wed","thur"];

           removeByValue(somearray,"tue");

 

     还可以使用Prototype的方法去实现,如下:

  Array.prototype.removeByValue=function(val)

  {

  for(var i=0;i<this.length;i++)

 {

  if(this[i]==val){

 this.splice(i,1);

break;

}

 }

 }

var somearray=["mon","tue","wed","thur"]

  somearray.removeByValue("tue");

3 通过字符串指定的方式动态调用某个方法

            有的时候,需要在运行时,动态调用某个已经存在的方法,并为其传入参数。

    var  strFun="someFunction";  // someFunction为已经定义的方法名

     var  strParam=''this is the Parameter"; //要传入方法的参数

   var  fn=window[strFun];

   // 调用方法传入参数

  fn(strParam);

 

         4 产生1到N的随机数

        var  random=Math.floor(Math.random()*N+1);

      //产生1到10之间的随机数

       var  random=Math.floor(Math.random()*10+1);

     //产生 1 到100之间的随机数

         var  random=Math,floor(Math.random()*100+1);

 

 

5 补捉浏览器关闭的事件

    当需要在用户关闭浏览器的时候,提示用户要保存信息,代码如下

   <script  language="javascript">

           function fnUnloadHandler()

   {

    alert(“Unload event . Do something to invalidate  users   session”);

    }

  </script>

      <body  onbeforeunload="fnUnloadHandler()">

............

     

      </body>

  6 检查表单数据是否改变

  有的时候,需要检查用户是否修改了一个表单中的内容,则可以使用下面的技巧,其中如果修改了表单的内容则返回true,没修改表单的内容则返回false

        function  formIsDirty(form)

       {

  for( var  i=0; i<form.elements.length;i++)

   {

    var  elemrnt=form.elements[i];

     var  type=element.type;

       if( type=="checkbox"||type=="radio")

   {

        if(element.checked!=element.defaultChecked)

  {

   return true; 

}

 }

  else  if (type=="hidden"||type=="password"||type=="text"||type=="textarea")

  {

  if  (element.value!=element.defaultValue)

 {

return true;

 }

 }     

       else if(type=="select-one"||type=="select-multiple")

  {

  for(var  j=0;j<element.options.length;j++)

 {

if(element.options[j].selected!=element.options[j].defaultSelected)

{

return false;

}

 }

 }

  }

 

  return false;

      }

  

        window.onbeforeunload=function(e)

  {

 e=e||window.event;

  if(formIsDirty(document.forms["someForm"]))

  {

//IE和firefx

        if(e)

  {

  e.returnValue="You  have unsaved  changes";

 }

    //Safar浏览器

return  "you  have unsaved  changes";

 }

 }

 

  7 完全禁止使用后退键

     <scipt  type="text/javascript">

   window.history.forward();

  function  noBack(){window.history.forward();}

     </script>

  <Body onload="noBack();" onpagesshow="if (event.persisted)noBack()" onunload="">

 

8  Listbox中的全选和全不选

      如果对于指定的listbox,下面的方法可以根据用户的需要,传入true或false 代表是全选listbox中的所有项目还是非全选所有项目,代码如下:

        functon  listboxSelectDeselect(listID,isSelect)

  {

   var  listbox=document.getElementById(lisrID);

                 for(var  count=0;count<listbox.options.length;count++)

     {

          listbox.options[count].selected=isSelect;

     }

 }

 

     9  快速初始化javascript数组

             var  numbers=[];

       for(var  i=1;numbers.push(i++)<100;);

 

   //numbers=[0,1,2,3,...100]

使用的是数组push 方法

10  截取指定位数的小数

 

      可以使用toFixed方法,比如:

        var  num=2.443242342;

    alert(num.toFixed(2));   //2.44

                     而使用toPrecision(x)则提供指定位数的精度,这里的X是全部的位数

如:

        num=500.2349;

      result=num.toPrecision(4) ;输出500.2

 

   11.去除JavaScript数组中的重复元素

       下面 的代码可以去掉JavaScript数组中的重复元素,如下:

       function removeDuplicates(arr)

  {

    var  temp=0;

 for(var i=0;i<arr.length;i++)

      temp[arr[i]]=true;

var  r=[];

 for (var  k in  temp)

r.push(k);

  return r;

}

        //用法

  var  fruits=['apple','orange','peach','apple','strawberry','organge'];

 var  uniquefruit=removeDuplicates(fruits);

  // 输出的uniquefruits['apple','organge','peach','strawberry'];

        

 

   12  对URL进行编码

 

  var  myOthUrl="http://example.com/index.html?url="+encodeURIComponent(myUrl);

    

原创粉丝点击