posts - 7,  comments - 58,  trackbacks - 0

          1、test.html  測試頁
           <html>
           <head>
             <title>測試頁面</title>
             <style>
               .list {
                 border-top:1 solid #8A2BE2;
                 border-left:1 solid #8A2BE2;
                 border-right:1 solid #8A2BE2;
               }
               .list td {
                 border-bottom: 1 solid #8A2BE2;
               }
             </style>
             <script>
                function $(el) {
                  return document.getElementById(el);
                }
                function showWin(param) {
                  window.showModalDialog("dailog.htm", param, "dialogWidth:" +param.width +"px;dialogHeight:"+param.height+"px;center:yes;help:no;scroll:no;status:no;resizable:no");
                }
               
                function TB(tbid) {
                  this.tb = typeof(tbid) == "string"? $(tbid): tbid;
                  this.getValue = function(rowIndex, cellIndex){
                    var trs = this.tb.rows[rowIndex];
                    var _td = trs.cells[cellIndex];
                    return _td.innerText;
                  }
                  this.setValue = function(rowIndex, cellIndex, value) {
                    var _tr = this.tb.rows[rowIndex];
                    var _td = _tr.cells[cellIndex];
                    _td.innerText = value;
                  }
                 
                  /********獲取行索引********/
                  this.findRowIndex = function(eventSrc) {
                    var _tr = eventSrc; //eventSrc事件源,必須在TD里獲事件源是TD或TR本身
                    while(_tr.tagName != "TR") {
                      _tr =  _tr.parentNode;
                    }
                    var trs = this.tb.rows;
                    for(var i = 0; i < trs.length; i++){
                      if(_tr == trs[i]) return i;
                    }
                  }
                }
                    
                function edit() {
                  var tb = new TB("data");
                  rIndex = tb.findRowIndex(event.srcElement);
                  $("updateRowIndex").value = rIndex;
                  $("userName").value = tb.getValue(rIndex, 1); //獲得姓名
                  $("sex").value = tb.getValue(rIndex, 2); //獲得性別
                  $("age").value = tb.getValue(rIndex, 3); //獲得年齡
                   showWin({title:"修改用戶信息", width:390, height:230, _div:"openWin",parent:window});
                }
               
                function saveAndUpdateView(){
                  var updateRowIndex = $("updateRowIndex").value;
                  var tb = new TB($f("data")); //$f()在dailog.html定義,獲到的table是父窗口中的table
                  tb.setValue(updateRowIndex, 1, $("userName").value);
                  tb.setValue(updateRowIndex, 2, $("sex").value);
                  tb.setValue(updateRowIndex, 3, $("age").value);
                  close();
                }
             </script>
            
           </head>
           <body>
            <p style="margin-top:60px">
             <center>
               <table id="data" class="list" width="460px">
                 <tr>
                   <td>編號</td>
                   <td>用戶名</td>
                   <td>性別</td>
                   <td>年齡</td>
                   <td>操作</td>
                 </tr>
                 <tr>
                   <td>1</td>
                   <td>李永勝</td>
                   <td>男</td>
                   <td>27</td>
                   <td><span style="background:#FAEBD7;cursor:hand" onclick="edit();">&nbsp;修改&nbsp;</span></td>
                 </tr>
                  <tr>
                   <td>2</td>
                   <td>林兄</td>
                   <td>男</td>
                   <td>27</td>
                   <td><span style="background:#FAEBD7;cursor:hand" onclick="edit();">&nbsp;修改&nbsp;</span></td>
                 </tr>
                  <tr>
                   <td>3</td>
                   <td>葉兄</td>
                   <td>男</td>
                   <td>23</td>
                   <td><span style="background:#FAEBD7;cursor:hand" onclick="edit();">&nbsp;修改&nbsp;</span></td>
                 </tr>
               </table>
             </center>
            </p>
           
            <!---彈出窗口顯示的內容---->
            <div id="openWin" style="display:none;">
              <form>
                <fieldSet>
                  <legend>修改用戶</legend>
                  <table>
                    <tr>
                      <td>用戶名</td><td><input type="text" id="userName"/></td>
                    </tr>
                    <tr>
                      <td>性別</td><td><input type="text" id="sex"/></td>
                    </tr>
                    <tr>
                      <td>年齡</td><td><input type="text" id="age"/></td>
                    </tr>
                  </table>
                </fieldSet>
                <input type="hidden" id="updateRowIndex"/>
              </form>
              <span style="background:#FAEBD7;cursor:hand" onclick="saveAndUpdateView();">&nbsp;修改&nbsp;</span>
            </div>
           </body>
          </html>

          2、dailog.html 窗口原型

          <html>
           <head>
             <script>
               var param = window.dialogArguments; //傳過來的模式對話框窗口參數
               document.title = param.title; //窗口標題,必須在窗口創建前實現s
              
             /********將父窗口的js加載進來********/
               var scripts = param.parent.document.scripts;
               var _head = document.getElementsByTagName("head")[0];
               for(var n = 0; n < scripts.length; n++) {
                 if(scripts[n].src) {
                   var _script = newEl("script");
                   _script.src = scripts[n].src;
                   bind(_head, _script);
                 }else{//加載直接在html文檔中寫的script
                   var _script = newEl("script");
                   _script.text = scripts[n].text;
                    bind(_head, _script);
                 }
               }
              
               /*******根據ID獲得父窗口的元素*********/
               function $f(el) {
                 return param.parent.document.getElementById(el);
               }
             
              /***********創建一個HTML元素*******/
               function newEl(tagName) {
                 return document.createElement(tagName);
               }
               /***********追加元素***************/
               function bind(ower, child) {
                 ower.appendChild(child);
               }
               /*******在瀏覽器完成對象的裝載后立即觸發*********/
               window.onload = function() {
                 var winDiv;
                 if(typeof(param._div) == "string") {
                   winDiv = param.parent.document.getElementById(param._div); //父窗口window對象,因為param._div對象在父窗口
                 }else{//直接傳對象過來
                   winDiv = param._div;
                 }
                 $("mainDiv").innerHTML = winDiv.innerHTML; //將DIV內容在彈出窗口中渲染
              }
             </script>
           </head>
           <body>
           <center>
            <div id="mainDiv" style="margin-top:20px;width:90%"></div>
           </center>
           </body>
          </html>

          如需轉載,請注明原文出處!謝謝合作。
          posted on 2008-05-01 21:33 Sonny Li 閱讀(5467) 評論(15)  編輯  收藏 所屬分類: javascript編程語言

          FeedBack:
          # re: 用"window.showModalDialog()"實現DIV模式彈出窗口
          2008-05-02 12:59 | Happy漫步者
          不錯 學習了 ^_^  回復  更多評論
            
          # re: 用"window.showModalDialog()"實現DIV模式彈出窗口[未登錄]
          2008-05-02 17:41 | 楓葉
          可不可以發個截圖看看??  回復  更多評論
            
          # re: 用"window.showModalDialog()"實現DIV模式彈出窗口
          2008-05-02 22:35 | 無羽蒼鷹
          將代碼拷貝下來運行就可以看到效果。  回復  更多評論
            
          # re: 用"window.showModalDialog()"實現DIV模式彈出窗口[未登錄]
          2008-05-02 22:49 | fly
          沒有效果啊~~~~~~~~  回復  更多評論
            
          # re: 用"window.showModalDialog()"實現DIV模式彈出窗口
          2008-05-02 22:57 | 無羽蒼鷹
          function showWin(param) {
          window.showModalDialog("dailog.htm", param, "dialogWidth:" +param.width +"px;dialogHeight:"+param.height+"px;center:yes;help:no;scroll:no;status:no;resizable:no");
          }
          "dailog.htm",為.htm 不是.html。不好意思!  回復  更多評論
            
          # re: 用"window.showModalDialog()"實現DIV模式彈出窗口[未登錄]
          2008-05-04 18:53 | A
          能描述一些應用的場景嗎?看demo是把彈出框的內容樣式,先在主頁面做好了,這樣有什么好處嗎?  回復  更多評論
            
          # re: 用"window.showModalDialog()"實現DIV模式彈出窗口
          2008-05-05 10:54 | 王戰鋒
          非常棒,這些代碼非常的精彩,你非常棒!  回復  更多評論
            
          # re: 用"window.showModalDialog()"實現DIV模式彈出窗口
          2008-05-09 22:34 |
          8錯。。拿來就用吧。。別問這么多。。^_^  回復  更多評論
            
          # re: 用"window.showModalDialog()"實現DIV模式彈出窗口
          2008-05-12 23:22 | wen
          好強呀,不錯,繼續努力呀!  回復  更多評論
            
          # re: 用"window.showModalDialog()"實現DIV模式彈出窗口
          2008-05-13 14:57 | Bowl2008
          剛剛接觸這個window.ShowModalDialog();頂這個帖子!!  回復  更多評論
            
          # re: 用"window.showModalDialog()"實現DIV模式彈出窗口
          2008-05-30 14:52 | f
          Firefox下運行失敗。  回復  更多評論
            
          # re: 用"window.showModalDialog()"實現DIV模式彈出窗口
          2008-08-22 09:23 | 無度海洋
          很不錯!可以運行  回復  更多評論
            
          # re: 用"window.showModalDialog()"實現DIV模式彈出窗口
          2009-03-05 15:28 | ll
          function showAlbumMsg(album_id){
          if(Prototype.Browser.IE){
          window.showModelessDialog("/","","dialogHeight=700px;dialogWidth=600px;scroll=yes;resizable=0;status=no");
          }
          else{
          window.open("/","","height=700,width=600,scrollbars=yes,resizable=0,location=no,menubar=no,titlebar=no,toolbar=no");
          }
          }  回復  更多評論
            
          # re: 用"window.showModalDialog()"實現DIV模式彈出窗口
          2014-11-27 17:02 | wudang
          @fly
          沒有東東  回復  更多評論
            
          <2008年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          文章分類

          相冊

          收藏夾

          博客好友

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 荔浦县| 深水埗区| 海阳市| 紫金县| 申扎县| 上杭县| 苍南县| 天全县| 抚宁县| 水富县| 新平| 灌云县| 长汀县| 确山县| 固阳县| 永福县| 民丰县| 乐东| 安化县| 奉新县| 河间市| 姜堰市| 静安区| 南投市| 武鸣县| 鹤峰县| 西丰县| 乌兰县| 兴国县| 洛浦县| 金山区| 丘北县| 旅游| 内黄县| 奎屯市| 琼海市| 正定县| 孝感市| 沅江市| 桑植县| 筠连县|