login  Naam:   Wachtwoord: 
Registreer je!
 Forum

js werkt niet in IE (Opgelost)

Offline Emonk - 24/06/2012 17:32
Avatar van EmonkLid Hallo,

Ik gebruik deze code op mijn website http://bingo.camilstaps.nl:

  1. var noTexts = 5;
  2. function addText() {
  3. var i;
  4. var texts = Array();
  5. var greek = Array();
  6. for (i=1;i<=noTexts;i++) {
  7. texts[i] = document.getElementById('text-'+i).value;
  8. greek[i] = document.getElementById('greek-'+i).checked;
  9. }
  10. noTexts++;
  11. document.getElementById("texts").innerHTML += '<tr><td>'+noTexts+'. </td><td><input type="text" name="text-'+noTexts+'" id="text-'+noTexts+'" tabindex="'+noTexts+'"/></td><td><input type="checkbox" name="greek-'+noTexts+'" id="greek-'+noTexts+'"/></td></tr>';
  12. }
  13.  
  14. function addTexts() {
  15. var n;
  16. var i = document.getElementById('newTexts').value;
  17. for (n=0;n<i;n++) {
  18. addText();
  19. }
  20. }
  21.  
  22. function checkForm() {
  23. var width = document.getElementById('width').value;
  24. var height = document.getElementById('height').value;
  25.  
  26. var i;
  27. var noUsedTexts = 0;
  28. for (i=1;i<=noTexts;i++) {
  29. if (document.getElementById('text-'+i).value!='') {
  30. noUsedTexts++;
  31. }
  32. }
  33.  
  34. if (noUsedTexts < width*height) {
  35. alert('Het aantal ingevulde teksten moet groter zijn dan het aantal velden van een formulier.');
  36. return false;
  37. }
  38.  
  39. return true;
  40. }


Dit werkt prima in chrome, FF, etc. maar IE geeft een error: regel 10 teken 5... regel 59 van het hele bestand. Ik zie geen fout, jullie wel?

Alvast bedankt

5 antwoorden

Gesponsorde links
Offline Martijn - 25/06/2012 11:21
Avatar van Martijn Crew PHP
  1. document.getElementById("texts").innerHTML += '<tr><td>'+noTexts+'. </td><td><input type="text" name="text-'+noTexts+'" id="text-'+noTexts+'" tabindex="'+noTexts+'"/></td><td><input type="checkbox" name="greek-'+noTexts+'" id="greek-'+noTexts+'"/></td></tr>';


Het is die regel, dat is regel 11 uit je code zo snel zo ik m even niet
Offline NTS64 - 25/06/2012 16:06
Avatar van NTS64 PHP gevorderde De innerHTML property van HTMLTableElement objecten is read-only in IE.

Meer info & oplossing: http://support.microsoft.com/kb/239832

Offline Emonk - 25/06/2012 20:00
Avatar van Emonk Lid Hmm, bedankt, maar die oplossing begrijp ik niet.
Wat zou de code moeten worden?
Offline NTS64 - 26/06/2012 11:35 (laatste wijziging 26/06/2012 11:45)
Avatar van NTS64 PHP gevorderde In plaats van wat er nu op regel 11 staat:



  1. var tbl = document.getElementById("texts");
  2. // stop nieuwe rij in tabel
  3. var newTR = tbl.insertRow(tbl.rows.length);
  4. // stop 3 nieuwe cellen in de nieuwe rij
  5. for(var arrTD = new Array(3), i = 0; i < arrTD.length; i++)
  6. arrTD[i] = newTR.insertCell(newTR.cells.length);
  7. // vul cellen in
  8. arrTD[0].innerHTML = noTexts + '.';
  9. arrTD[1].innerHTML = '<input type="text" name="text-' + noTexts + '" id="text-' + noTexts + '" tabindex="' + noTexts + '">';
  10. arrTD[2].innerHTML = '<input type="checkbox" name="greek-' + noTexts + '" id="greek-' + noTexts+ '">';


Mocht je compatibiliteit met oudere browsers willen hebben(insertRow en insertCell worden niet ondersteund in Chrome < 4, Safari < 4 en Opera Presto < 2.1) kan je het in een try/catch stoppen:

  1. try {
  2. if(var tbl = document.getElementById("texts"))
  3. tbl += '<tr><td>'+noTexts+'. </td><td><input type="text" name="text-'+noTexts+'" id="text-'+noTexts+'" tabindex="'+noTexts+'"/></td><td><input type="checkbox" name="greek-'+noTexts+'" id="greek-'+noTexts+'"/></td></tr>';
  4. }
  5. catch(e)
  6. {
  7. var tbl = document.getElementById("texts");
  8. // stop nieuwe rij in tabel
  9. var newTR = tbl.insertRow(tbl.rows.length);
  10. // stop 3 nieuwe cellen in de nieuwe rij
  11. for(var arrTD = new Array(3), i = 0; i < arrTD.length; i++)
  12. arrTD[i] = newTR.insertCell(newTR.cells.length);
  13. // vul cellen in
  14. arrTD[0].innerHTML = noTexts + '.';
  15. arrTD[1].innerHTML = '<input type="text" name="text-' + noTexts + '" id="text-' + noTexts + '" tabindex="' + noTexts + '">';
  16. arrTD[2].innerHTML = '<input type="checkbox" name="greek-' + noTexts + '" id="greek-' + noTexts+ '"/>';
  17. }


Deze code probeert eerst via de innerHTML property de nieuwe rij toe te voegen. Als dit een fout veroorzaakt(in IE dus) wordt de catch uitgevoerd.
Bedankt door: Emonk
Offline Emonk - 26/06/2012 19:53
Avatar van Emonk Lid Bedankt! Deze code werkt 
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.178s