Avatar billede sorenmt84 Juniormester
29. oktober 2003 - 14:57 Der er 6 kommentarer og
1 løsning

Insæt tabel script - virker ikke

Jeg bruger følgende script til at indsætte en tabel i en wysiwyg, eller rettere, det vil jeg gerne... Boksen kommer fint op når jeg trykker på knappen, men når jeg så trykker insert, lukker den bare uden at indsætte noget!


--------------------------------------------------

<html>
<head>
<meta name="Generator" content="Stone's WebWriter 4">
<meta name=vs_targetSchema content="HTML 4.0">
<LINK rel="stylesheet" type="text/css" href="dialog.css">
<title>Insert Table</title>
<script language="JavaScript">
function attr(name, value) {
    if (!value || value == "") return "";
    return ' ' + name + '="' + value + '"';
}
function insertTable() {
    var nRows = rows.value ? parseInt(rows.value) : 2;
    var nCols = cols.value ? parseInt(cols.value) : 2;
    var strHTML = '<TABLE'
                    + attr("border", borderWidth.value)
                    + attr("bordercolor", borderColor.value)
                    + attr("cellspacing", cellSpacing.value)
                    + attr("cellpadding", cellPadding.value)
                    + attr("bgcolor", backgroundColor.value)
                    + '>';
    for (var i = 0; i < nRows; i++) {
        strHTML += '<TR>\n';
        for (var j = 0; j < nCols; j++) {
                strHTML += '<TD></TD>\n';
        }
        strHTML += '</TR>\n';
    }
    strHTML += '</TABLE>\n';
    window.returnValue = strHTML;
    window.close();
}
function cancel() {
    window.returnValue = null;
    window.close();
}
</script>
</head>

<body topmargin="0" leftmargin="0" style="border: 0; margin: 0;" scroll="no">
<table class="dlg" cellpadding="0" cellspacing="2" width="100%" height="100%">
<tr><td colspan="5"><table width="100%"><tr><td>Layout</td><td valign="middle" width="90%"><hr width="100%"></td></tr></table></td></tr>
<tr>
<td width="10">&nbsp;</td>
<td width="70">Rows:</td><td valign="middle"><input type="text" name="rows" value="2" size="5"></td>
<td width="70">Cell Padding:</td><td valign="middle"><input type="text" name="cellPadding" value="0" size="5"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>Cols:</td><td valign="middle"><input type="text" name="cols" value="2" size="5"></td>
<td>Cell Spacing:</td><td valign="middle"><input type="text" name="cellSpacing" value="0" size="5"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>Rows Height:</td><td valign="middle"><input type="text" name="rowHeight" value="20" size="5"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>Column Width:</td><td valign="middle"><input type="text" name="colWidth" value="100" size="5"></td>
</tr>
<tr><td colspan="5"><table width="100%"><tr><td>Borders</td><td valign="middle" width="90%"><hr width="100%"></td></tr></table></td></tr>
<tr>
<td>&nbsp;</td>
<td>Width:</td><td valign="middle"><input type="text" name="borderWidth" value="0" size="5"></td>
<td>Color:</td><td valign="middle"><input type="text" name="borderColor" value="black" size="10"></td>
</tr>
<tr><td colspan="5"><table width="100%"><tr><td>Background</td><td valign="middle" width="90%"><hr width="100%"></td></tr></table></td></tr>
<tr>
<td>&nbsp;</td>
<td>Color:</td><td valign="middle"><input type="text" name="backgroundColor" value="" size="15"></td>
</tr>
<tr><td colspan="5"><table width="100%"><tr><td valign="middle" width="100%" colspan="2"><hr width="100%"></td></tr></table></td></tr>
<tr>
<td>&nbsp;</td>
<td><td colspan="4" align="right"><input class="button" type="button" value="Insert" title="Insert Table" onclick="insertTable()">
<input class="button" type="button" value="Cancel" title="Cancel Dialog" onclick="cancel()"></td>
</tr>
</table>
</body>
</html>
Avatar billede smirnoff Nybegynder
29. oktober 2003 - 21:49 #1
Jamen hvad gør du med window.returnValue ?!?

... den skal jo sætte den variabel ind et eller andet sted ...
Avatar billede smirnoff Nybegynder
29. oktober 2003 - 21:50 #2
jeg går ud fra du bruger showModalDialog() ?
Avatar billede sorenmt84 Juniormester
29. oktober 2003 - 22:21 #3
Jeg ved ikke helt hvordan det hænger sammen, det er ikke mig der har skrevet det og javascript er ikke min stærkeste side, men jeg bruger showModalDialog()
Avatar billede smirnoff Nybegynder
29. oktober 2003 - 22:38 #4
Okay ... i et vindue du åbner med showModalDialog kan man sætte en variabel "window.returnValue = XXX", som vinduet så returnerer når det lukkes (det har du  fået er lavet rigtigt nok) - det er skal skal ske er at det script som kalder dialogen, skal modtage denne værdi som returneres :

<script type="text/javascript">
    var returval = null;

    function openDialog() {
        var returval = window.showModalDialog(...);
       
        if(returval != null)  {
              // gør noget ved variablen
              alert(returval);
        }
    }
</script>


denne funktion vil alerte din HTML :) -- så må du selv gøre noget ved den
Avatar billede sorenmt84 Juniormester
15. november 2003 - 13:06 #5
Jeg fandt et andet script, som jeg så fik tilpasset og nu virker det helt som det skal...

<html STYLE="width: 432px; height: 168px; ">
<head><title>Indsæt tabel</title>
<style>
  html, body, button, div, input, select, td, fieldset { font-family: MS Shell Dlg; font-size: 8pt; };
</style>
<meta name="Generator" content="Stone's WebWriter 4">
<script>
opener = window.dialogArguments;

var _editor_url = opener._editor_url;
var objname    = location.search.substring(1,location.search.length);
var config      = opener.document.all[objname].config;
var editor_obj  = opener.document.all["_" +objname+  "_editor"];
var editdoc    = editor_obj.contentWindow.document;

function _CloseOnEsc() {
  if (event.keyCode == 27) { window.close(); return; }
}

window.onerror = HandleError

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() {
  document.body.onkeypress = _CloseOnEsc;
}

function _isValidNumber(txtBox) {
  var val = parseInt(txtBox);
  if (isNaN(val) || val < 0 || val > 9999) { return false; }
  return true;
}

function btnOKClick() {
  var curRange = editdoc.selection.createRange();

  // error checking
  var checkList = ['rows','cols','border','cellspacing','cellpadding'];
  for (var idx in checkList) {
    var fieldname = checkList[idx];
    if (document.all[fieldname].value == "") {
      alert("You must specify a value for the '" +fieldname+ "' field!");
      document.all[fieldname].focus();
      return;
    }
    else if (!_isValidNumber(document.all[fieldname].value)) {
      alert("You must specify a number between 0 and 9999 for '" +fieldname+ "'!");
      document.all[fieldname].focus();
      return;
    }
  }




  // create table
  var table = '<table border="' +document.all.border.value+ '"'
            + ' cellspacing="' +document.all.cellspacing.value+ '"'
            + ' cellpadding="' +document.all.cellpadding.value+ '"'
            + ' width="' +document.all.width.value + document.all.widthExt.value+ '"'
            + ' align="' +document.all.alignment.value+ '">\n';

  for (var x=0; x<document.all.rows.value; x++) {
    table += " <tr>\n";
    for (var y=0; y<document.all.cols.value; y++) {
      table += "  <td></td>\n";
    }
    table += " </tr>\n";
  }
  table += "</table>\n";

  // insert table
  opener.editor_insertHTML(objname, table);


  // close popup window
  window.close();
}
</SCRIPT>
</HEAD>
<BODY id=bdy onload="Init()" style="background: threedface" scroll=no>

<table border="0" cellspacing="0" cellpadding="0">
<tr>
  <td>Rækker: &nbsp;</td>
  <td><input type="text" name="rows" value="4"  style="width: 50px" maxlength=4></td>
</tr>
<tr>
  <td>Kolonner:</td>
  <td><input type="text" name="cols" value="3"  style="width: 50px" maxlength=4></td>
  <td width=10>&nbsp;</td>
  <td>Bredde: &nbsp;</td>
  <td>
  <input type="text" name="width" value="90" style="width: 50px" maxlength=4>
  <select name="widthExt">
    <option value="">Pixels</option>
    <option value="%" selected>Procent</option>
  </select>
  </td>
</tr>
</table>


<FIELDSET style="width: 1%; text-align: center">
<LEGEND>Layout</LEGEND>

<table border=0 cellspacing=6 cellpadding=0>
<tr>
  <td height=21>Justering:</td>
  <td>
  <select name="alignment" size=1>
  <option value="Not set">Ikke valgt</option>
  <option value="left">Venstre</option>
  <option value="right">Højre</option>
  <option value="textTop">Tekst top</option>
  <option value="bottom">Bunden</option>
  <option value="middle">Midt for</option>
  <option value="top">Top</option>
  </select>
  </td>
</tr>
<tr>
  <td><nobr>Ramme tykkelse:</nobr></td>
  <td><select name="border" style="width: 100%"><option value="0">0</option><option value="1" SELECTED>1</option><option value="2">2</option><option value="3">3</option></select></td>
</tr>
</table>
</FIELDSET>


<FIELDSET style="width: 1%; text-align: center">
<LEGEND>Afstand</LEGEND>

<table border=0 cellspacing=6 cellpadding=0>
<tr>
  <td><nobr>Celleafstand:</nobr></td>
  <td><input type="text" name="cellspacing" value="1" style="width: 50px" maxlength=4></td>
</tr>
<tr>
  <td><nobr>Cellemargen:</nobr></td>
  <td><input type="text" name="cellpadding" value="2" style="width: 50px" maxlength=4></td>
</tr>
</table>
</FIELDSET>


<div style="left: 340px; top: 16px; position: absolute">
<BUTTON style="width: 7em; height: 2.2em; margin: 0 0 3 0" type=submit onclick="btnOKClick()">Indsæt</BUTTON><br>
<BUTTON style="width: 7em; height: 2.2em; " type=reset onClick="window.close();">Annuler</BUTTON>
</div>

</BODY>
</HTML>
Avatar billede sorenmt84 Juniormester
15. november 2003 - 13:06 #6
Nu var det ikke meningen at du skulle ha haft nogle point, men jeg trykkede på den forkerte knap...

Så har du fået lidt for den lange tid der er gået :-D
Avatar billede smirnoff Nybegynder
17. november 2003 - 10:20 #7
jeg takker :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester