zoukankan      html  css  js  c++  java
  • web应用Ajax之prototype

    1、文章目的:了解prototype对Ajax的支持

    2、简单记忆: 实际工作中或多或少都会用到。

    3、js应用编写及方法提示:

    /**
     * html文本框元素id="textField",id="sageField"  div id="out"[获取元素]
     */

    function handler(){
     var name=$('textField','sageField');
     for ( var i = 0; i < name.length;) {
      $('out').innerHTML+=name[i].value+"&nbsp;"
      i+=1;
     }
     return false;
     
    }

    /**
     * checkbox组成的数组, name="checkBox"  div id="view"[集合变数组]
     */

    function checkBox(){
     var filedList=document.getElementsByName("checkBox");
     var fieldArray=$A(filedList);
     for ( var i = 0; i < fieldArray.length;) {
      $('view').innerHTML=fieldArray[i].value+"&nbsp;"
      i+=1;
     }
     return false;
    }

    /**
     * 获取输入文本域表单的任何元素的值[$F()函数][表单元素的值]
     */

    function findValue(){
     var title=$F('title');
     var content=$F('content');
     $('view').innerHTML="文章标题为:"+title+"内容:"+content;
     return false;
    }

    /**
     * Try.these()  获取返回值
     * 语法  Try.these(function1,function2,..........);任意一个函数执行成功就返回
     */
    function returnValue(){
     var str="";
     return  Try.these(
       function(){
        str="new XMLHttpRequest";
        return new XMLHttpRequest();
       },
       function(){
        str="new ActiveXObject('Msxml.XMLHTTP')";
        return new ActiveXObject('Msxml.XMLHTTP')
       },
       function(){
        str="new ActiveXObject('Microsoft.XMLHTTP')";
        return new ActiveXObject('Microsoft.XMLHTTP')
       }
     );
    }

    /**
     *prototype 自定义对象和类
     *(1)addClassName(element,className)-------设置css类样式
     *(2)classNames(element)-----------返回给定element的CSS名称的描述
     *(3)empty(element)-----检测是否为空
     *(4)getHeight(element)-----返回offsetHeight值
     *(5)getStyle(element)------返回css的属性值
     *(6)inspect(element)------返回一个格式良好的字符串
     *(7)match(element)------检测是否给定的css选择器
     *(8)remove(element)-----从Document对象中移除
     *(9)visible(element)----元素是否可见,返回true or false
     */

    //示例:添加css样式
    //.solid{
    //   color:red;
    //      border:solid 1px;
    //}

    function addClass(){
     Element.addClass('divId','solid');
    }

    /**
     * enumerable 对象在页面中显示数组元素
     * (1)each(iterator)       反复调用给定的iterator。iterator==function(value,index);
     * (2)collect(iterator)  对集合中的每个元素调用iterator函数并将结果收到数组中返回。
     * (3)detect(iterator)   获取集合中第一个满足某个条件的元素。函数调用依次处理集合中的元素
     * (4)include(object)    尝试在集合中查找给定的集合元素对象,返回true(found) or false(not found)
     * (5)zip(collection1,collection2,collection3..........)将给定的集合与当前的集合合并。
     *          ----------------合并操作返回一个数组和新的集合
     */

    function foo(v,i){
     $('result').innerHTML="value: "+v+"Index: "+i;
     return true;
    }

    function fool(a,v,i){
     a+=i+":"+v+" ";
     return a;
    }

    function showExample(){
     var testArray=[2,4,6,8];
     $('result').innerHTML="数组元素为:"+testArray+"<br/>"
     testArray.each(foo);
     var arr=testArray.grep(/3/);      //grep()函数,正则表达式匹配含有3的字符串
     for ( var i = 0; i < arr.length;) {
      $('result').innerHTML="arr["+i+"]"+arr[i]+"<br/>";
      i+=1;
     }
     //测试inject方法
     var injectArr=testArray.inject("inject方法返回结果:",fool);
     $('result').innerHTML+=injectArr;
    }


    /**
     * Filed 对象操作表单域
     * (1)clear(field1,field2,field3.........)清除所有表单元素的值
     * (2)focus(field)将焦点移到指定的表单域。
     * (3)select(field)用于选中表单元素的文本。
     * (4)activate(field) 同select但比select多一个功能,如果目标元素没有内容,则将焦点移至目标元素。
     * (5)present(field1,field2,field3........)判断参数表单域是否为空 true (not null)
     */

    function clearTextarea(){
     Field.clear('textArea');
    }

    function judgeTextarea(){
     if(!Field.present('textArea')){
      alert("此文本为空!");
     }else{
      alert("此文本不为空!");
     }
    }
    function focusTextarea(){
     Field.focus('textArea');
    }

    function selectTextarea(){
     Field.select('textArea');
    }

    /**
     * Form对象实现让表单元素失效
     * (1)enable(form)表单生效
     * (2)disable(form)表单失效
     * (3)serialize(form)返回指定的表单域的名字和值组成的字符串
     * (4)getElements(form)以数组形式返回表单中的所有的表单域的值
     * (5)findFirstElement(form ).....返回第一个有效的表单域
     * (6)rest(form)重置表单
     */

    function getInput(){
     var obj=Form.getInputs('form1');
     for ( var i = 0; i < obj.length; ) {
      alert(obj[i]);
      i+=1;
     }
    }

    function setEnable(){
     Form.enable('form1');
    }

    function setDisable(){
     Form.disable('form1');
    }

    function getElements(){
     var obj=Form.getElements('form1');
     for ( var i = 0; i < obj.length; ) {
      alert(obj[i].value);
      i+=1;
     }
    }

    /**
     * Form.Element返回特定表单域的值
     * (1)activate(element) 移动焦点并且选择支持文本选择的表单元素的值。
     * (2)clear(element)    将表单元素值清空
     *(3)disable(element)禁用表单元素
     *(4)enable(element)启用表单元素
     *(5)focus(element)....
     * (6)getValue(element) 返回值
     *(7)present(element)仅当所有表单元素包含非空时返回true
     *(8)serialize(element) 将名称和值转化为"name=value"的形式
     */

    function getTest(text){
     alert(Form.Elememt.serialize(text));
    }

    function getValue(){
     alert(Form.Elememt.getValue("textField"));
    }

    /**
     * prototype对Ajax的支持
     * method  ‘post’  提交方式 get和post
     * encoding  UTF-8    内容编码
     * parameters   ''    参数
     * asynchronous   true  默认为true[ 是否异步提交]
     * onComplete      ‘’  用于请求的回调函数
     */
    function showResponse(){
     $('result').innerHTML=originalRequest.responseText;
     Element.show('result');
    }

    function searFruit(){
     var url="tips.jsp";
     var params=Form.Element.serizlize('favorite');
     var myAjax=new Ajax.Request(
       url,{
        method:'post',
        parameters:params,
        onComplete:showResponse,
        asynchronous: true
       });
    }
    //tips.jsp
    //<%
    //  String re=request.getParameter("result");
    //  if("apple".equals(re)){
    //   out.println("喜欢苹果!");
    //  }
    //  ...............
    //%>


    /**
     * 注册全局事件处理,Ajax.Responders全局监听器仓库
     * register()   注册一个全局ajax事件处理器(包含系列方法如:onCreate,onComplete,onException)。
     * unregister() 删除一个已经注册的ajax事件处理器
     * dispatch()   遍历注册的处理器列表
     */

    var globleHandler={
     onCreate:function(){
       Element.show("loading....");
        },
        onFailure:function(){
         alert("对不起!"+"\n"+"页面加载出错!");
        },
        onComplete:function(){
         if(Ajax.activeRequestCount==0){
          Element.hide("loading....");
         }
        }
    };

    Ajax.Responders.register(globleHandler);

    /**
     * 定时刷新时间,Ajax.PeriodicalUpdater类定时刷新
     * method  post/get
     * parameters ...
     * frequency   多久发送一次Ajax请求
     * decay       若两次响应完全相同,则减慢发送频率
     * onSuccess   成功时执行函数
     * onFailure   失败时执行函数
     * evalScripts 是否执行服务器响应非JavaScript脚本  true or false
     */
    function execute(){
     var url="date.jsp";
     var myAjax=new Ajax.PeriocalUpdater(
       'time',url,{
        method:'post',
        parameters:null,
        frequency:1
       });
    }

    //date.jsp
    //<body>
    //<%
    //  out.print( new Date());
    //%>
    //</body>

  • 相关阅读:
    判断 undefined and ( == null) and (!something) and ( == null)
    textarea高度自适应自动展开
    退出 js和Jquery区别
    javascript高级程序设计 学习笔记 第五章 下
    Bind, Call and Apply in JavaScript
    javascript高级程序设计 学习笔记 第五章 上
    小程序入门---登录流程
    Array类型 JS
    深入浅出妙用 Javascript 中 apply、call、bind
    微信公众号开发(与angular框架相结合)
  • 原文地址:https://www.cnblogs.com/boonya/p/2262376.html
Copyright © 2011-2022 走看看