这个是一个showModalDialog打开的页面

解决方案 »

  1.   

    btnOK在函数之后定义,所以错误。请用document.getElementById('btnOK');取得对象,就不会错了。
      

  2.   

    btnOK = document.getElementById('btnOK');
    btnOK.onclick = new Function("btnOKClick()");
      

  3.   

    这个问题解决了,十分感谢。还想问一个问题:如何将showModalDialog的变量回传给母窗口?
      

  4.   

    我这个代码出处是:
    <SCRIPT defer>function _CloseOnEsc() {
      if (event.keyCode == 27) { window.close(); return; }
    }function _getTextRange(elm) {
      var r = elm.parentTextEdit.createTextRange();
      r.moveToElementText(elm);
      return r;
    }function HandleError(message, url, line) {
      var str = "An error has occurred in this dialog." + "\n\n"
      + "Error: " + line + "\n" + message;
      alert(str);
      window.close();
      return true;
    }function Init() {
      var elmSelectedImage;
      var htmlSelectionControl = "Control";
      var globalDoc = window.dialogArguments;
      //var grngMaster = globalDoc.selection.createRange();  // event handlers
      document.body.onkeypress = _CloseOnEsc;
      btnOK.onclick = new Function("btnOKClick()");  txtFileName.fImageLoaded = false;
      txtFileName.intImageWidth = 0;
      txtFileName.intImageHeight = 0;  if (globalDoc.selection.type == htmlSelectionControl) {
        if (grngMaster.length == 1) {
          elmSelectedImage = grngMaster.item(0);
          if (elmSelectedImage.tagName == "IMG") {
            txtFileName.fImageLoaded = true;
            if (elmSelectedImage.src) {
              txtFileName.value          = elmSelectedImage.src.replace(/^[^*]*(\*\*\*)/, "$1");  // fix placeholder src values that editor converted to abs paths
              txtFileName.intImageHeight = elmSelectedImage.height;
              txtFileName.intImageWidth  = elmSelectedImage.width;
              txtVertical.value          = elmSelectedImage.vspace;
              txtHorizontal.value        = elmSelectedImage.hspace;
              txtBorder.value            = elmSelectedImage.border;
              txtAltText.value           = elmSelectedImage.alt;
              selAlignment.value         = elmSelectedImage.align;
            }
          }
        }
      }
      txtFileName.value = txtFileName.value || "http://";
      txtFileName.focus();
    }function _isValidNumber(txtBox) {
      var val = parseInt(txtBox);
      if (isNaN(val) || val < 0 || val > 999) { return false; }
      return true;
    }function btnOKClick() {
      var elmImage;
      var intAlignment;
      var htmlSelectionControl = "Control";
      var globalDoc = window.dialogArguments;
      var grngMaster = globalDoc.selection.createRange();  // error checking  if (!txtFileName.value || txtFileName.value == "http://") {
        alert("图像连接不能为空");
        txtFileName.focus();
        return;
      }
      if (txtHorizontal.value && !_isValidNumber(txtHorizontal.value)) {
        alert("水平间距必须介于 0 -- 999.");
        txtHorizontal.focus();
        return;
      }
      if (txtBorder.value && !_isValidNumber(txtBorder.value)) {
        alert("边宽必须介于 0 -- 999.");
        txtBorder.focus();
        return;
      }
      if (txtVertical.value && !_isValidNumber(txtVertical.value)) {
        alert("垂直间距必须介于 0 -- 999.");
        txtVertical.focus();
        return;
      }  // delete selected content and replace with image
      if (globalDoc.selection.type == htmlSelectionControl && !txtFileName.fImageLoaded) {
        grngMaster.execCommand('Delete');
        grngMaster = globalDoc.selection.createRange();
      }  idstr = "\" id=\"556e697175657e537472696e67";     // new image creation ID
      if (!txtFileName.fImageLoaded) {
        grngMaster.execCommand("InsertImage", false, idstr);
        elmImage = globalDoc.all['556e697175657e537472696e67'];
        elmImage.removeAttribute("id");
        elmImage.removeAttribute("src");
        grngMaster.moveStart("character", -1);
      } else {
        elmImage = grngMaster.item(0);
        if (elmImage.src != txtFileName.value) {
          grngMaster.execCommand('Delete');
          grngMaster = globalDoc.selection.createRange();
          grngMaster.execCommand("InsertImage", false, idstr);
          elmImage = globalDoc.all['556e697175657e537472696e67'];
          elmImage.removeAttribute("id");
          elmImage.removeAttribute("src");
          grngMaster.moveStart("character", -1);
          txtFileName.fImageLoaded = false;
        }
        grngMaster = _getTextRange(elmImage);
      }  if (txtFileName.fImageLoaded) {
        elmImage.style.width = txtFileName.intImageWidth;
        elmImage.style.height = txtFileName.intImageHeight;
      }  if (txtFileName.value.length > 2040) {
        txtFileName.value = txtFileName.value.substring(0,2040);
      }  elmImage.src = txtFileName.value;  if (txtHorizontal.value != "") { elmImage.hspace = parseInt(txtHorizontal.value); }
      else                           { elmImage.hspace = 0; }  if (txtVertical.value != "") { elmImage.vspace = parseInt(txtVertical.value); }
      else                         { elmImage.vspace = 0; }  elmImage.alt = txtAltText.value;  if (txtBorder.value != "") { elmImage.border = parseInt(txtBorder.value); }
      else                       { elmImage.border = 0; }  elmImage.align = selAlignment.value;
      grngMaster.collapse(false);
      grngMaster.select();
      window.close();
    }
    </SCRIPT><BODY id=bdy style="BACKGROUND: buttonface; COLOR: windowtext" scroll=no onload=Init()>
    ...
    <BUTTON id=btnOK style="LEFT: 31.36em; WIDTH: 7em; TOP: 1.06em; HEIGHT: 2.2em" tabIndex=40 type=submit>确定</BUTTON><BUTTON id=btnCancel style="LEFT: 31.36em; WIDTH: 7em; TOP: 3.65em; HEIGHT: 2.2em" onclick=window.close(); tabIndex=45 type=reset>取消</FONT></BUTTON>
    为什么这个代码没有“document.getElementById('btnOK');”却能正确输出呢?
      

  5.   

    index.html 
     var arr = showModalDialog("selcolor.html", "", "dialogWidth:18.5em; dialogHeight:17.5em; status:0; location:yes;");
    selcolor.html
    <SCRIPT  language=JavaScript>
    window.returnValue = SelColor.value;
    window.close();
    </SCRIPT>window.returnValue 会赋予arr