java學習

          java學習

           

          dtd講解

          classroom.dtd文件:<?xml version="1.0" encoding="UTF-8"?>
          <!ELEMENT classroom (claName,grade,students)>
          <!ATTLIST classroom id ID #REQUIRED>
          <!ELEMENT claName (#PCDATA)>
          <!ELEMENT grade (#PCDATA)>
          <!ELEMENT students (student+)>
          <!ELEMENT student (id,stuName,age)>
          <!ELEMENT id (#PCDATA)>
          <!ELEMENT stuName (#PCDATA)>
          <!ELEMENT age (#PCDATA)>

          classroom.xml文件:<?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE classroom SYSTEM "classroom.dtd">
          <classroom id="c1">
           <claName>10計算機應用技術</claName>
           <grade>2010</grade>
           <students>
            <student>
             <id>1</id>
             <stuName>zhangsan</stuName>
             <age>12</age>
            </student>
            <student>
             <id>2</id>
             <stuName>lisi</stuName>
             <age>122</age>
            </student>
           </students>
          </classroom>

          posted @ 2013-08-13 09:50 楊軍威 閱讀(147) | 評論 (0)編輯 收藏

          使用soap協議用java語言建立服務發送xml文件,接收xml文件



          private static String ns = " private static String wsdlUrl = "http://localhost:8989/ms?wsdl";public static void test02() {
            try {
             //1???創建服務(Service)
             URL url = new URL(wsdlUrl);
             QName sname = new QName(ns,"MyServiceImplService");
             Service service = Service.create(url,sname);
             
             //2????創建Dispatch
             Dispatch<SOAPMessage> dispatch = service.createDispatch(new QName(ns,"MyServiceImplPort"),
                SOAPMessage.class, Service.Mode.MESSAGE);
             
             //3????創建SOAPMessage
             SOAPMessage msg = MessageFactory.newInstance().createMessage();
             SOAPEnvelope envelope = msg.getSOAPPart().getEnvelope();
             SOAPBody body = envelope.getBody();
             
             //4???創建QName來指定消息中傳遞數據????
             QName ename = new QName(ns,"add","nn");//<nn:add xmlns="xx"/>
             SOAPBodyElement ele = body.addBodyElement(ename);
             ele.addChildElement("a").setValue("22");
             ele.addChildElement("b").setValue("33");
             msg.writeTo(System.out);
             System.out.println("\n invoking.....");
             
             
             //5?通過Dispatch傳遞消息,會返回響應消息
             SOAPMessage response = dispatch.invoke(msg);
             response.writeTo(System.out);
             System.out.println("\n----------------------------------------");
             
             //??將響應的消息轉換為dom對象??
             Document doc = response.getSOAPPart().getEnvelope().getBody().extractContentAsDocument();
             String str = doc.getElementsByTagName("addResult").item(0).getTextContent();
             System.out.println(str);
            } catch (SOAPException e) {
             e.printStackTrace();
            } catch (IOException e) {
             e.printStackTrace();
            }
           }
           

          posted @ 2013-08-07 17:59 楊軍威 閱讀(892) | 評論 (0)編輯 收藏

          XPath解析,寫入,修改xml文件

          public static void test06() {
            InputStream is = null;
            try {
             is = TestStax.class.getClassLoader().getResourceAsStream("books.xml");
             //創建文檔處理對象
             DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
             //通過DocumentBuilder創建doc的文檔對象
             Document doc = db.parse(is);
             //創建XPath
             XPath xpath = XPathFactory.newInstance().newXPath();
             //第一個參數就是xpath,第二參數就是文檔
             NodeList list = (NodeList)xpath.evaluate("http://book[@category='WEB']", doc,XPathConstants.NODESET);
             for(int i=0;i<list.getLength();i++) {
              //遍歷輸出相應的結果
              Element e = (Element)list.item(i);
              System.out.println(e.getElementsByTagName("title").item(0).getTextContent());
             }
            } catch (ParserConfigurationException e) {
             e.printStackTrace();
            } catch (SAXException e) {
             e.printStackTrace();
            } catch (IOException e) {
             e.printStackTrace();
            } catch (XPathExpressionException e) {
             e.printStackTrace();
            } finally {
             try {
              if(is!=null) is.close();
             } catch (IOException e) {
              e.printStackTrace();
             }
            }
           }
           
           @Test
           public static void test07() {
            try {
             XMLStreamWriter xsw = XMLOutputFactory.newInstance().createXMLStreamWriter(System.out);
             xsw.writeStartDocument("UTF-8","1.0");
             xsw.writeEndDocument();
             String ns = "http://11:dd";
             xsw.writeStartElement("nsadfsadf","person",ns);
             xsw.writeStartElement(ns,"id");
             xsw.writeCharacters("1");
             xsw.writeEndElement();
             xsw.writeEndElement();
             xsw.flush();
             xsw.close();
            } catch (XMLStreamException e) {
             e.printStackTrace();
            } catch (FactoryConfigurationError e) {
             e.printStackTrace();
            }
           }
           
           @Test
           public static void test08() {
            InputStream is = null;
            try {
             is = TestStax.class.getClassLoader().getResourceAsStream("books.xml");
             //創建文檔處理對象
             DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
             //通過DocumentBuilder創建doc的文檔對象
             Document doc = db.parse(is);
             //創建XPath
             XPath xpath = XPathFactory.newInstance().newXPath();
             Transformer tran = TransformerFactory.newInstance().newTransformer();
             tran.setOutputProperty(OutputKeys.ENCODING,"UTF-8");
             tran.setOutputProperty(OutputKeys.INDENT, "yes");
             //第一個參數就是xpath,第二參數就是文檔
             NodeList list = (NodeList)xpath.evaluate("http://book[title='Learning XML']", doc,XPathConstants.NODESET);
             //獲取price節點
             Element be = (Element)list.item(0);
             Element e = (Element)(be.getElementsByTagName("price").item(0));
             e.setTextContent("333.9");
             Result result = new StreamResult(System.out);
             //通過tranformer修改節點
             tran.transform(new DOMSource(doc), result);
            } catch (ParserConfigurationException e) {
             e.printStackTrace();
            } catch (SAXException e) {
             e.printStackTrace();
            } catch (IOException e) {
             e.printStackTrace();
            } catch (XPathExpressionException e) {
             e.printStackTrace();
            } catch (TransformerConfigurationException e) {
             e.printStackTrace();
            } catch (TransformerFactoryConfigurationError e) {
             e.printStackTrace();
            } catch (TransformerException e) {
             e.printStackTrace();
            } finally {
             try {
              if(is!=null) is.close();
             } catch (IOException e) {
              e.printStackTrace();
             }
            }
           }

          posted @ 2013-08-07 13:54 楊軍威 閱讀(2859) | 評論 (1)編輯 收藏

          XMLEventReader的基于Filter的過濾方式解析xml文件

          public static void test05() {
            XMLInputFactory factory = XMLInputFactory.newInstance();
            InputStream is = null;
            try {
             is = TestStax.class.getClassLoader().getResourceAsStream("books.xml");
             //基于Filter的過濾方式,可以有效的過濾掉不用進行操作的節點,效率會高一些
             XMLEventReader reader = factory.createFilteredReader(factory.createXMLEventReader(is),
               new EventFilter() {
                @Override
                public boolean accept(XMLEvent event) {
                 //返回true表示會顯示,返回false表示不顯示
                 if(event.isStartElement()) {
                  String name = event.asStartElement().getName().toString();
                  if(name.equals("title")||name.equals("price"))
                   return true;
                 }
                 return false;
                }
               });
             int num = 0;
             while(reader.hasNext()) {
              //通過XMLEvent來獲取是否是某種節點類型
              XMLEvent event = reader.nextEvent();
              if(event.isStartElement()) {
               //通過event.asxxx轉換節點
               String name = event.asStartElement().getName().toString();
               if(name.equals("title")) {
                System.out.print(reader.getElementText()+":");
               }
               if(name.equals("price")) {
                System.out.print(reader.getElementText()+"\n");
               }
              }
              num++;
             }
             System.out.println(num);
            } catch (XMLStreamException e) {
             e.printStackTrace();
            } finally {
             try {
              if(is!=null) is.close();
             } catch (IOException e) {
              e.printStackTrace();
             }
            }
           }

          posted @ 2013-08-07 13:53 楊軍威 閱讀(204) | 評論 (0)編輯 收藏

          XMLEventReader迭代解析xml文件

          public static void test04() {
            XMLInputFactory factory = XMLInputFactory.newInstance();
            InputStream is = null;
            try {
             is = TestStax.class.getClassLoader().getResourceAsStream("books.xml");
             //基于迭代模型的操作方式
             XMLEventReader reader = factory.createXMLEventReader(is);
             int num = 0;
             while(reader.hasNext()) {
              //通過XMLEvent來獲取是否是某種節點類型
              XMLEvent event = reader.nextEvent();
              if(event.isStartElement()) {
               //通過event.asxxx轉換節點
               String name = event.asStartElement().getName().toString();
               if(name.equals("title")) {
                System.out.print(reader.getElementText()+":");
               }
               if(name.equals("price")) {
                System.out.print(reader.getElementText()+"\n");
               }
              }
              num++;
             }
             System.out.println(num);
            } catch (XMLStreamException e) {
             e.printStackTrace();
            } finally {
             try {
              if(is!=null) is.close();
             } catch (IOException e) {
              e.printStackTrace();
             }
            }
           }

          posted @ 2013-08-07 13:52 楊軍威 閱讀(1560) | 評論 (0)編輯 收藏

          XMLStreamReader光標解析xml文件

          public static void test01() {
            XMLInputFactory factory = XMLInputFactory.newInstance();
            InputStream is = null;
            try {
             is = TestStax.class.getClassLoader().getResourceAsStream("books.xml");
             XMLStreamReader reader = factory.createXMLStreamReader(is);
             while(reader.hasNext()) {
                                  //    System.out.println("------------------------------------------------");
              int type = reader.next();
                                           System.out.println("type---"+type);
              //判斷節點類型是否是開始或者結束或者文本節點,之后根據情況及進行處理
              if(type==XMLStreamConstants.START_ELEMENT) {//==1,指示事件是一個開始元素
               System.out.println(reader.getName());
                                                  String name = reader.getName().toString();
                                                  if("book".equals(name)){
                                                       System.out.println(reader.getAttributeName(0)+":"+reader.getAttributeValue(0));
                                                  }else if("title".equals(name)){
                                                       System.out.println(reader.getAttributeName(0)+":"+reader.getAttributeValue(0));
                                                  }
                                                 
                                                  //  System.out.println("==1,指示事件是一個開始元素");
              } else if(type==XMLStreamConstants.CHARACTERS) {//==4指示事件是一些字符
               System.out.println(reader.getText().trim());
                                              // System.out.println("==4指示事件是一些字符");
              } else if(type==XMLStreamConstants.END_ELEMENT) {//==2,指示事件是一個結束元素
               System.out.println("/"+reader.getName());
                                               //  System.out.println("==2,指示事件是一個結束元素");
              }
                                          //else if(type==XMLStreamConstants.ATTRIBUTE){
          //                                   int count = reader.getAttributeCount();
          //                                   System.out.println("count========"+count);
          //                                 if(count>0){
          //                                     int i=0;
          //                                     int[] arr = new int[count];
          //                                     while(i<count){
          //                                         arr[i]=i;
          //                                         i++;
          //                                     }
          //                                     for(int a : arr){
          //                                         System.out.println(reader.getAttributeValue(a));
          //                                     }
          //                                 }
          //                                }
             }
            } catch (XMLStreamException e) {
             e.printStackTrace();
            } finally {
             try {
              if(is!=null) is.close();
             } catch (IOException e) {
              e.printStackTrace();
             }
            }
           }

          posted @ 2013-08-07 13:51 楊軍威 閱讀(1704) | 評論 (0)編輯 收藏

          使用jaxb完成對象和xml的轉換

          學生類

          import javax.xml.bind.annotation.XmlRootElement;

          @XmlRootElement
          public class Student {
           private int id;
           private String name;
           private int age;
           private Classroom classroom;
           public int getId() {
            return id;
           }
           public void setId(int id) {
            this.id = id;
           }
           public String getName() {
            return name;
           }
           public void setName(String name) {
            this.name = name;
           }
           public int getAge() {
            return age;
           }
           public void setAge(int age) {
            this.age = age;
           }
           public Classroom getClassroom() {
            return classroom;
           }
           public void setClassroom(Classroom classroom) {
            this.classroom = classroom;
           }
           public Student(int id, String name, int age, Classroom classroom) {
            super();
            this.id = id;
            this.name = name;
            this.age = age;
            this.classroom = classroom;
           }
           public Student() {
            super();
           }
           
           
          }

          教室類
          public class Classroom {
           private int id;
           private String name;
           private int grade;
           public int getId() {
            return id;
           }
           public void setId(int id) {
            this.id = id;
           }
           public String getName() {
            return name;
           }
           public void setName(String name) {
            this.name = name;
           }
           public int getGrade() {
            return grade;
           }
           public void setGrade(int grade) {
            this.grade = grade;
           }
           public Classroom(int id, String name, int grade) {
            super();
            this.id = id;
            this.name = name;
            this.grade = grade;
           }
           public Classroom() {
            super();
            // TODO Auto-generated constructor stub
           }
           
           
          }

          測試類:

          public class TestJaxb {

              public static void main(String[] args){
                  TestJaxb.test02();
              }
           @Test
           public static void test01() {//測試對象轉換xml字符串
            try {
             JAXBContext ctx = JAXBContext.newInstance(Student.class);
             Marshaller marshaller = ctx.createMarshaller();
             Student stu = new Student(1,"張三",21,new Classroom(1,"10計算機應用技術",2010));
             marshaller.marshal(stu, System.out);
            } catch (JAXBException e) {
             e.printStackTrace();
            }
           }
           
           @Test
           public static void test02() {//測試xml字符串轉換對象
            try {
             String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><student><age>21</age><classroom><grade>2010</grade><id>1</id><name>10計算機應用技術</name></classroom><id>1</id><name>張三</name></student>";
             JAXBContext ctx = JAXBContext.newInstance(Student.class);
             Unmarshaller um = ctx.createUnmarshaller();
             Student stu = (Student)um.unmarshal(new StringReader(xml));
             System.out.println(stu.getName()+","+stu.getClassroom().getName());
            } catch (JAXBException e) {
             e.printStackTrace();
            }
            
           }
          }


          posted @ 2013-08-07 11:02 楊軍威 閱讀(861) | 評論 (0)編輯 收藏

          webservice的筆記



          1簡歷webservice服務的步驟:



          1)服務器的建立:1創建接口SEIService Endpoint Interface



          @WebService()



          public interface IMyService
          {



            



             @WebResult(name="addResult")



             public int add(@WebParam(name="a")int
          a,@WebParam(name="b")int b);



            



             @WebResult(name="minusResult")



             public int minus(@WebParam(name="a")int
          a,@WebParam(name="b")int b);



            



             @WebResult(name="loginUser")



             public User login(@WebParam(name="username")String
          username,@WebParam(name="password")String password);



           



          }



          2創建實現類SIB(Service inplemention Bean)



          @WebService(endpointInterface="org.zttc.service.IMyService")



          public class MyServiceImpl
          implements IMyService {



           



             @Override



             public int add(int a, int b) {



                 System.out.println(a+"+"+b+"="+(a+b));



                 return a+b;



             }



           



             @Override



             public int minus(int a, int b) {



                 System.out.println(a+"-"+b+"="+(a-b));



                 return a-b;



             }



           



             @Override



             public User login(String username, String password) {



                 System.out.println(username+" is logining");



                 User user = new User();



                 user.setId(1);



                 user.setUsername(username);



                 user.setPassword(password);



                 return user;



             }



           



          }



          3:開啟服務



          public class MyServer {



           



                public
          static void main(String[] args) {



                     String
          address = "http://localhost:8888/ns";



                     Endpoint.publish(address,
          new MyServiceImpl());



                }



           



          }



          在瀏覽器地址欄中輸入; http://localhost:8888/ns?wsdl,看到頁面上出現xml文件。



          2)客戶端的建立:



          public class TestClient {



                public
          static void main(String[] args) {



                     try
          {



          創建訪問wsdl服務地址的url



                           URL
          url = new URL("http://localhost:8888/ns?wsdl");



                通過qname指明服務的具體信息



                           QName
          sname = new QName("http://service.zttc.org/",
          "MyServiceImplService");



                創建服務



                           Service
          service = Service.create(url,sname);



                                                           實現接口



                           IMyService
          ms = service.getPort(IMyService.class);



                           System.out.println(ms.add(12,33));



                    



                     }
          catch (MalformedURLException e) {



                           e.printStackTrace();



                     }



                }



          }



          3.wsdl的有關參數:



          types:用來定義訪問的類型



          message:SOAP



          portType:指明服務器的接口,并且通過operation綁定相應的inout的消息:其中in表示參數,out表示返回值



          binding:指定傳遞消息所使用的格式



          service:指定服務所發布的名稱



          4dtd的例子:



          classroom.dtd



          <?xml version="1.0"
          encoding="UTF-8"?>



          <!ELEMENT classroom
          (claName,grade,students)>



          <!ATTLIST classroom id ID #REQUIRED>



          <!ELEMENT claName (#PCDATA)>



          <!ELEMENT grade (#PCDATA)>



          <!ELEMENT students (student+)>



          <!ELEMENT student (id,stuName,age)>



          <!ELEMENT id (#PCDATA)>



          <!ELEMENT stuName (#PCDATA)>



          <!ELEMENT age (#PCDATA)>



          classroom.xml



          <?xml version="1.0"
          encoding="UTF-8"?>



          <!DOCTYPE classroom SYSTEM
          "classroom.dtd">



          <classroom id="c1">



                <claName>10計算機應用技術</claName>



                <grade>2010</grade>



                <students>



                     <student>



                           <id>1</id>



                           <stuName>zhangsan</stuName>



                           <age>12</age>



                     </student>



                     <student>



                           <id>2</id>



                           <stuName>lisi</stuName>



                           <age>122</age>



                     </student>



                </students>



          </classroom>



           



          posted @ 2013-08-07 10:51 楊軍威 閱讀(278) | 評論 (0)編輯 收藏

          js筆記

          1.得到訪問的文件地址

           <script type="text/javascript">
             
                  with(location){
                      var qs = search.substring(1);
                      var hostName = hostname;      //unavailable when viewing from a local file
                      var url = href;
                  }

                  alert(qs);
                  alert(hostName);
                  alert(url);

           

              </script>

          <script type="text/javascript">
                    //  == 表示兩個對象的toString相等
          //===表示兩個對象的類型相等且值相等。
                  alert(null == undefined);    //true
                  alert(null === undefined);   //false
                 
                  alert("NaN" == NaN);        //false
                  alert("NaN" === NaN);       //false
                  alert(NaN == NaN);          //false
                  alert(NaN === NaN);         //false
                  alert(NaN != NaN);          //true
                  alert(NaN !== NaN);         //true
                 
                  alert(false == 0);          //true
                  alert(false === 0);         //false
                  alert(true == 1);           //true
                  alert(true === 1);          //false
                 
                  alert(null == 0);           //false
                  alert(undefined == 0);      //false
                 
                  alert(5 == "5");            //true
                  alert(5 === "5");           //false               
              </script>

           

          --

          <script type="text/javascript">
                     
                  alert(null == undefined);    //true
                  alert(null === undefined);   //false
                 
                  alert("NaN" == NaN);        //false
                  alert("NaN" === NaN);       //false
                  alert(NaN == NaN);          //false
                  alert(NaN === NaN);         //false
                  alert(NaN != NaN);          //true
                  alert(NaN !== NaN);         //true
                 
                  alert(false == 0);          //true
                  alert(false === 0);         //false
                  alert(true == 1);           //true
                  alert(true === 1);          //false
                 
                  alert(null == 0);           //false
                  alert(undefined == 0);      //false
                 
                  alert(5 == "5");            //true
                  alert(5 === "5");           //false               

              </script>

          <script type="text/javascript">
                     
                  var result1 = ("55" != 55);    //false ?equal because of conversion
                  var result2 = ("55" !== 55);   //true ?not equal because different data types
                  alert(result1);
                  alert(result2);       

           var result1 = ("55" == 55);    //true ?equal because of conversion
                  var result2 = ("55" === 55);   //false ?not equal because different data types           

              </script>
          得到window中所有的事件

           

           <script type="text/javascript">
                  for (var propName in window) {
                       document.write(propName);
                       document.write("<br />");
                  }


              </script>


           <script type="text/javascript">
                  for (var propName in window) {
                       document.write(propName);
                       document.write("<br />");
                  }


              </script>

          方法參數數組

           

          <script type="text/javascript">
                  function sayHi() {
                      alert("Hello " + arguments[0] + ", " + arguments[1]);
                  }

                  sayHi("Nicholas", "how are you today?");


           function howManyArgs() {
                      alert(arguments.length);
                  }
                 
                  howManyArgs("string", 45);    //2
                  howManyArgs();                //0
                  howManyArgs(12);              //1    </script>


          <script type="text/javascript">
                  function sayHi() {
                      alert("Hello " + arguments[0] + ", " + arguments[1]);
                  }

                  sayHi("Nicholas", "how are you today?");
              </script>

          null的類型

          <script type="text/javascript">
                   
                  var car = null;
                  alert(typeof car);   //"object"
                       


           alert(null == undefined);   //true    </script>

          --

          <script type="text/javascript">
                   
                  var car = null;
                  alert(typeof car);   //"object"
                       
              </script>

           

           

           

          posted @ 2013-08-05 16:15 楊軍威 閱讀(159) | 評論 (0)編輯 收藏

          javascript技巧

          1  Javascript數組轉換為CSV格式


          首先考慮如下的應用場景,有一個Javscript的字符型(或者數值型)數組,現在需要轉換為以逗號分割的CSV格式文件。則我們可以使用如下的小技巧,代碼如下:

          1. var fruits = ['apple', 'peaches', 'oranges', 'mangoes'];
          2.  var str = fruits.valueOf();

           


          輸出:apple,peaches,oranges,mangoes


          其中,valueOf()方法會將Javascript數組轉變為逗號隔開的字符串。要注意的是,如果想不使用逗號分割,比如用|號分割,則請使用join方法,如下:

          1. var fruits = ['apple', 'peaches', 'oranges', 'mangoes'];
          2. var str = fruits.join("|");

          輸出: apple|peaches|oranges|mangoes


          2 將CSV格式重新轉換回Javscript數組


          那么如何將一個CSV格式的字符串轉變回Javascript數組呢?可以使用split()方法,就可以使用任何指定的字符去分隔,代碼如下:

          1. var str = "apple, peaches, oranges, mangoes";
          2.  var fruitsArray = str.split(",");

           


          輸出 fruitsArray[0]: apple


          3 根據索引移除數組中的某個元素


          假如需要從Javascript數組中移除某個元素,可以使用splice方法,該方法將根據傳入參數n,移除數組中移除第n個元素(Javascript數組中從第0位開始計算)。

          1. function removeByIndex(arr, index) {
          2. arr.splice(index, 1);
          3. }
          4. test = new Array();
          5. test[0] = 'Apple';
          6. test[1] = 'Ball';
          7. test[2] = 'Cat';
          8. test[3] = 'Dog';
          9. alert("Array before removing elements: "+test);
          10. removeByIndex(test, 2);
          11. alert("Array after removing elements: "+test);

           


          則最后輸出的為Apple,Ball,Dog


           


          4 根據元素的值移除數組元素中的值


          下面這個技巧是很實用的,是根據給定的值去刪除數組中的元素,代碼如下:

          1. function removeByValue(arr, val) {
          2. for(var i=0; i<arr.length; i++) {
          3. if(arr[i] == val) {
          4. arr.splice(i, 1);
          5. break;
          6. }
          7. }
          8. }
          9. var somearray = ["mon", "tue", "wed", "thur"]
          10. removeByValue(somearray, "tue");
          11. //somearray 將會有的元素是 "mon", "wed", "thur"

           


          當然,更好的方式是使用prototype的方法去實現,如下代碼:

          1. Array.prototype.removeByValue = function(val) {
          2. for(var i=0; i<this.length; i++) {
          3. if(this[i] == val) {
          4. this.splice(i, 1);
          5. break;
          6. }
          7. }
          8. }
          9. //..
          10. var somearray = ["mon", "tue", "wed", "thur"]
          11. somearray.removeByValue("tue");

           


          5 通過字符串指定的方式動態調用某個方法


          有的時候,需要在運行時,動態調用某個已經存在的方法,并為其傳入參數。這個如何實現呢?下面的代碼可以:

          1. var strFun = "someFunction"; //someFunction 為已經定義的方法名
          2. var strParam = "this is the parameter"; //要傳入方法的參數
          3. var fn = window[strFun];
          4. //調用方法傳入參數
          5. fn(strParam);

           


          6 產生1N的隨機數

          1. var random = Math.floor(Math.random() * N + 1);
          2. //產生1到10之間的隨機數
          3. var random = Math.floor(Math.random() * 10 + 1);
          4. //產生1到100之間的隨機數
          5. var random = Math.floor(Math.random() * 100 + 1);

           


          7 捕捉瀏覽器關閉的事件


          我們經常希望在用戶關閉瀏覽器的時候,提示用戶要保存尚未保存的東西,則下面的這個Javascript技巧是十分有用的,代碼如下:

          1.  <script language="javascript">
          2. function fnUnloadHandler() {
          3. alert("Unload event.. Do something to invalidate users session..");
          4. }
          5. </script>
          6. <body onbeforeunload="fnUnloadHandler()">
          7. ………
          8. </body>

          --

           


          就是編寫onbeforeunload()事件的代碼即可

          8  檢查是否按了回退鍵


          同樣,可以檢查用戶是否按了回退鍵,代碼如下:

          1. window.onbeforeunload = function() {
          2. return "You work will be lost.";
          3. };

           


          9  檢查表單數據是否改變


          有的時候,需要檢查用戶是否修改了一個表單中的內容,則可以使用下面的技巧,其中如果修改了表單的內容則返回true,沒修改表單的內容則返回false。代碼如下:

          1. function formIsDirty(form) {
          2. for (var i = 0; i < form.elements.length; i++) {
          3. var element = form.elements[i];
          4. var type = element.type;
          5. if (type == "checkbox" || type == "radio") {
          6. if (element.checked != element.defaultChecked) {
          7. return true;
          8. }
          9. }
          10. else if (type == "hidden" || type == "password" ||
          11. type == "text" || type == "textarea") {
          12. if (element.value != element.defaultValue) {
          13. return true;
          14. }
          15. }
          16. else if (type == "select-one" || type == "select-multiple") {
          17. for (var j = 0; j < element.options.length; j++) {
          18. if (element.options[j].selected !=
          19. element.options[j].defaultSelected) {
          20. return true;
          21. }
          22. }
          23. }
          24. }
          25. return false;
          26. }
          27. window.onbeforeunload = function(e) {
          28. e = e || window.event;
          29. if (formIsDirty(document.forms["someForm"])) {
          30. // IE 和 Firefox
          31. if (e) {
          32. e.returnValue = "You have unsaved changes.";
          33. }
          34. // Safari瀏覽器
          35. return "You have unsaved changes.";
          36. }
          37. };

          10  完全禁止使用后退鍵


          下面的技巧放在頁面中,則可以防止用戶點后退鍵,這在一些情況下是需要的。代碼如下:

          1. <SCRIPT type="text/javascript">
          2. window.history.forward();
          3. function noBack() { window.history.forward(); }
          4. </SCRIPT>
          5. </HEAD>
          6. <BODY onload="noBack();"
          7. onpageshow="if (event.persisted) noBack();" onunload="">

           


          11 刪除用戶多選框中選擇的項目


          下面提供的技巧,是當用戶在下拉框多選項目的時候,當點刪除的時候,可以一次刪除它們,代碼如下:

          1. function selectBoxRemove(sourceID) {
          2. //獲得listbox的id
          3. var src = document.getElementById(sourceID);
          4. //循環listbox
          5. for(var count= src.options.length-1; count >= 0; count--) {
          6. //如果找到要刪除的選項,則刪除
          7. if(src.options[count].selected == true) {
          8. try {
          9. src.remove(count, null);
          10. } catch(error) {
          11. src.remove(count);
          12. }
          13. }
          14. }
          15. }

           


          12  Listbox中的全選和非全選


          如果對于指定的listbox,下面的方法可以根據用戶的需要,傳入true或false,分別代表是全選listbox中的所有項目還是非全選所有項目,代碼如下:

          1. function listboxSelectDeselect(listID, isSelect) {
          2. var listbox = document.getElementById(listID);
          3. for(var count=0; count < listbox.options.length; count++) {
          4. listbox.options[count].selected = isSelect;
          5. }
          6. }

          13 Listbox中項目的上下移動

          下面的代碼,給出了在一個listbox中如何上下移動項目

          1. unction listbox_move(listID, direction) {
          2. var listbox = document.getElementById(listID);
          3. var selIndex = listbox.selectedIndex;
          4. if(-1 == selIndex) {
          5. alert("Please select an option to move.");
          6. return;
          7. }
          8. var increment = -1;
          9. if(direction == 'up')
          10. increment = -1;
          11. else
          12. increment = 1;
          13. if((selIndex + increment) < 0 ||
          14. (selIndex + increment) > (listbox.options.length-1)) {
          15. return;
          16. }
          17. var selValue = listbox.options[selIndex].value;
          18. var selText = listbox.options[selIndex].text;
          19. listbox.options[selIndex].value = listbox.options[selIndex + increment].value
          20. listbox.options[selIndex].text = listbox.options[selIndex + increment].text
          21. listbox.options[selIndex + increment].value = selValue;
          22. listbox.options[selIndex + increment].text = selText;
          23. listbox.selectedIndex = selIndex + increment;
          24. }
          25. //..
          26. //..
          27. listbox_move('countryList', 'up'); //move up the selected option
          28. listbox_move('countryList', 'down'); //move down the selected option

           

          14 在兩個不同的Listbox中移動項目

          如果在兩個不同的Listbox中,經常需要在左邊的一個Listbox中移動項目到另外一個Listbox中去,下面是相關代碼:

          1. function listbox_moveacross(sourceID, destID) {
          2. var src = document.getElementById(sourceID);
          3. var dest = document.getElementById(destID);
          4. for(var count=0; count < src.options.length; count++) {
          5. if(src.options[count].selected == true) {
          6. var option = src.options[count];
          7. var newOption = document.createElement("option");
          8. newOption.value = option.value;
          9. newOption.text = option.text;
          10. newOption.selected = true;
          11. try {
          12. dest.add(newOption, null); //Standard
          13. src.remove(count, null);
          14. }catch(error) {
          15. dest.add(newOption); // IE only
          16. src.remove(count);
          17. }
          18. count--;
          19. }
          20. }
          21. }
          22. //..
          23. //..
          24. listbox_moveacross('countryList', 'selectedCountryList');

           

          15 快速初始化Javscript數組

          下面的方法,給出了一種快速初始化Javscript數組的方法,代碼如下:

          1. var numbers = [];
          2. for(var i=1; numbers.push(i++)<100;);
          3. //numbers = [0,1,2,3 ... 100]
          4. 使用的是數組的push方法

           

          16 截取指定位數的小數

          如果要截取小數后的指定位數,可以使用toFixed方法,比如:

          1. var num = 2.443242342;
          2.  alert(num.toFixed(2)); // 2.44
          3. 而使用toPrecision(x)則提供指定位數的精度,這里的x是全部的位數,如:
          4. num = 500.2349;
          5.  result = num.toPrecision(4);//輸出500.2

           

          17 檢查字符串中是否包含其他字符串

          下面的代碼中,可以實現檢查某個字符串中是否包含其他字符串。代碼如下:

          1. if (!Array.prototype.indexOf) {
          2. Array.prototype.indexOf = function(obj, start) {
          3. for (var i = (start || 0), j = this.length; i < j; i++) {
          4. if (this[i] === obj) { return i; }
          5. }
          6. return -1;
          7. }
          8. }
          9. if (!String.prototype.contains) {
          10. String.prototype.contains = function (arg) {
          11. return !!~this.indexOf(arg);
          12. };
          13. }

           

          在上面的代碼中重寫了indexOf方法并定義了contains方法,使用的方法如下:

          1. var hay = "a quick brown fox jumps over lazy dog";
          2. var needle = "jumps";
          3. alert(hay.contains(needle));

           

          18 去掉Javscript數組中的重復元素

          下面的代碼可以去掉Javascript數組中的重復元素,如下:

          1. function removeDuplicates(arr) {
          2. var temp = {};
          3. for (var i = 0; i < arr.length; i++)
          4. temp[arr[i]] = true;
          5. var r = [];
          6. for (var k in temp)
          7. r.push(k);
          8. return r;
          9. }
          10. //用法
          11. var fruits = ['apple', 'orange', 'peach', 'apple', 'strawberry', 'orange'];
          12. var uniquefruits = removeDuplicates(fruits);
          13. //輸出的 uniquefruits ['apple', 'orange', 'peach', 'strawberry'];

           

          19 去掉String中的多余空格

          下面的代碼會為String增加一個trim()方法,代碼如下:

          1. if (!String.prototype.trim) {
          2. String.prototype.trim=function() {
          3. return this.replace(/^\s+|\s+$/g, '');
          4. };
          5. }
          6. //用法
          7. var str = " some string ";
          8. str.trim();
          9. //輸出 str = "some string"

           

          20 Javascript中的重定向

          在Javascript中,可以實現重定向,方法如下:

          1. window.location.href = "http://viralpatel.net";

           

          21 對URL進行編碼

          有的時候,需要對URL中的傳遞的進行編碼,方法如下:

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

          --



          posted @ 2013-07-31 16:17 楊軍威 閱讀(185) | 評論 (0)編輯 收藏

          僅列出標題
          共43頁: First 上一頁 13 14 15 16 17 18 19 20 21 下一頁 Last 

          導航

          統計

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 金塔县| 海安县| 循化| 汉沽区| 海伦市| 亳州市| 阳城县| 新丰县| 富顺县| 曲沃县| 黑水县| 怀远县| 永康市| 青龙| 洪泽县| 眉山市| 景宁| 肃宁县| 喀喇| 温宿县| 马关县| 延长县| 隆回县| 陆河县| 南康市| 英超| 中江县| 石门县| 沙湾县| 丹江口市| 萝北县| 白朗县| 桑植县| 安龙县| 富源县| 张家港市| 尖扎县| 磐石市| 桐庐县| 延津县| 张家界市|