Avatar billede shadowdance Nybegynder
07. december 2004 - 15:32 Der er 1 løsning

Funktion der indsætter nye rækker i tabel

Jeg har følgende kode:


        <table id="ingtabel" width="700" border="0" cellpadding="0" cellspacing="0">
          <tr>
            <td width="130">M&aelig;ngde</td>
            <td width="20">&nbsp;</td>
            <td width="100">M&aelig;ngdem&aring;l</td>
            <td width="20">&nbsp;</td>
            <td>Ingredienser</td>
          </tr>
          <tr>
            <td><input name="txt0" type="text" id="txt0" size="20" onChange="addCode()"></td>
            <td>&nbsp;</td>
            <td><input name="txt1" type="text" id="txt1" size="10" onChange="addCode()"></td>
            <td>&nbsp;</td>
            <td><input name="txt2" type="text" id="txt2" size="50" maxlength="50" onChange="addCode()"></td>
          </tr>
        </table>
        <p align="center">
          <input type="submit" name="Submit" value="Submit">
        </p>
        <p>&nbsp; </p>
        <p id="myp">&nbsp; </p>
      </form>
      <p>&nbsp;</p>
<script language="JavaScript" type="text/javascript">

    function addCode()
    {
        a = document.forms[0].length;
        var referrer = event.srcElement.id;
        referrer = referrer.substring(3);
        referrer = parseInt(referrer);
       

       
        if (referrer == (a-1))
        {
            b = a;
            var y = "<tr><td><input name=txt" + b + " type=text id=txt" + b + " size=20></td><td>&nbsp;</td><td><input name=txt" + (b+1) + " type=text id=txt" + (b+1) + " size=10></td><td>&nbsp;</td><td><input name=txt" + (b+2) + " type=text id=txt" + (b+2) + " size=50 maxlength=50 onChange=addCode()></td></tr>";
            oldhtml = (document.getElementById('ingtabel')).innerHTML;
            oldhtml = oldhtml.substring(oldhtml.indexOf('<TBODY>')+7,oldhtml.indexOf('</TBODY>'));
            var newhtml = oldhtml+y;
            (document.getElementById('ingtabel')).innerHTML= newhtml;
        }
    }
</script>
---------------------------------------------------------
Men mit script fungerer ikke. Og det forstår jeg ikke. For hvis jeg får den til at udskrive koden, ser den helt rigtig ud. Men hvis jeg forsøger at add´e den til tabellens innerHTML, så får jeg en 'error on page'.

Nogle gode forslag til, hvordan det kan løses - evt med en helt anden metode eller uden javaScript. Sagen er den, at brugeren skal have mulighed for at indtaste uendeligt mange ingredienser i en madopskrift. Og derfor skal der tilføjes nye tekstbokse, hver gang de sidste er blevet taget i brug.
Avatar billede olebole Juniormester
07. december 2004 - 15:53 #1
<ole>

Ja, du kan ikke længere bruge 'innerHTML' til den slags  :)
Du kunne f.eks. skrive:

<script type="text/JavaScript">
function insRow() {
    var tbl,row,cell;
    tbl = document.getElementById("hest");
    row = tbl.insertRow();
    cell = row.insertCell();
    cell.innerHTML = "Noget tekst";
    cell = row.insertCell();
    cell.innerHTML = "Noget andet tekst";
}
</script>

<table id="hest" cellspacing="0" cellpadding="0" border="0">
<tr>
    <td>hkjhkjhkjh</td>
    <td>hkjhkjhkjh</td>
</tr>
</table>
<br>
<button onclick="insRow()">TEST</button>

/mvh
</bole>
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