2009年9月10日木曜日

jqueryでDOM操作

xmlによるDOM操作をもうちょっと勉強してみた。

繰り返しとかeachでできるようになったけど、
子要素とか難しい。
childとか。

でも、だいたいできるようになった気がする。

ポイントは、dataTypeとか指定しないことかなぁー

 → 指定はずしたら、うまく動くようになった。。。

XMLソース


  1. <!--xml version="1.0" encoding="UTF-8" ?-->  
  2. <address_database>  
  3. <address recordid="1" zipcode="6900015" kanjiaddress="島根県松江市秋鹿町" kanaaddress="マネケンマツエシアイカチョウ">  
  4. <address recordid="2" zipcode="6900834" kanjiaddress="島根県松江市青葉台" kanaaddress="マネケンマツエシアオバダイ">  
  5. <address recordid="3" zipcode="6900003" kanjiaddress="島根県松江市上乃木" kanaaddress="マネケンマツエシアゲノギ">  
  6. <address recordid="4" zipcode="6900027" kanjiaddress="島根県松江市朝酌町" kanaaddress="マネケンマツエシアサクミチョウ">  
  7. <address recordid="5" zipcode="6900881" kanjiaddress="島根県松江市朝日町" kanaaddress="マネケンマツエシアサヒマチ">  
  8. <address recordid="6" zipcode="6900006" kanjiaddress="島根県松江市意宇町" kanaaddress="マネケンマツエシイウチョウ">  
  9. <address recordid="7" zipcode="6900034" kanjiaddress="島根県松江市石橋町" kanaaddress="マネケンマツエシイシバシチョウ">  
  10. <address recordid="8" zipcode="6900062" kanjiaddress="島根県松江市伊勢宮町" kanaaddress="マネケンマツエシイセミヤチョウ">  
  11. <address recordid="9" zipcode="6900869" kanjiaddress="島根県松江市一の谷町" kanaaddress="マネケンマツエシイチノタニチョウ">  
  12. <address recordid="10" zipcode="6900131" kanjiaddress="島根県松江市魚町" kanaaddress="マネケンマツエシウオマチ">  
  13.                                                               
  14. </address></address></address></address></address></address></address></address></address></address></address_database>  


HTMLソース




  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  2.   
  3. <html lang="ja">  
  4. <head>  
  5. <title> .:: Sample Play Keepaway ::. Ajax-02</title>  
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  7. <meta http-equiv="cache-control" content="no-cache">  
  8. <meta name="Author" content="Sample">  
  9. <meta http-equiv="Content-Script-Type" content="text/javascript">  
  10. <link rel="stylesheet" href="css/blue/style.css" type="text/css" media="print, projection, screen" />  
  11. <link rel="stylesheet" href="css/default.css" type="text/css" />  



  1. <script language="Javascript" type="text/javascript" charset="UTF-8" src="js/lib/jquery-1.3.2.min.js"></script>  
  2. <script type="text/javascript">  
  3. $(function(){  
  4.     $.ajax({  
  5.     url: './xml/sample.xml',  
  6.     cache: false,  
  7.     type: 'GET',  
  8.     timeout: 5000,  
  9.     error: function(){  
  10.         alert('xmlファイルの読み込みに失敗しました');  
  11.     },  
  12.     success: function(xml){  
  13.         var index = 0;  
  14.         $(xml).find("address").each(function(){  
  15.             index++;  
  16.             var zipCode = $(this).attr('zipCode');  
  17.             var kanjiAddress = $(this).attr('kanjiAddress');  
  18.             var kanaAddress = $(this).attr('kanaAddress');  
  19.   
  20.             $('<div></div>')  
  21.                 .html('<a href="javascript:void(0); return false;" id="' + 'res-' + index + '">' + zipCode + ',' + kanjiAddress + ',' + kanaAddress + '</a>')  
  22.                 .appendTo('div#result');  
  23.         });  
  24.         $("li.demo").html("");  
  25.         $("div#result").find("a").each(function(){  
  26.             $(this).click(function(){  
  27.                 $('#address_text').val($(this).text());  
  28.             });  
  29.         });  
  30.     }  
  31.     });  
  32. });  
  33. </script>  



  1. </head>  
  2. <body>  
  3.   
  4. <div class="preview">  
  5. <input type="text" style="width: 20em;" name="address" value="" id="address_text">  
  6. <div style="border: 1px solid silver; padding: 2px; position: absolute; z-index: 999; background-color: lightyellow;" id="result" class="result"></div>  
  7. <ol id="samp-list">  
  8. </ol>  
  9.   
  10. </div>  
  11.   
  12. </body>  
  13. </html>