Toon posts:

[js] span.innerHTML issues

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallow,

ik heb hier een probleempje met javascript. Ik wil de inhoud van een layer (<span>) laten veranderen d.m.v. een javascript-functie middels de innerHTML.

Maar zodra ik bij een lege span aan de innerHTML '<table>' toevoeg gooit hij er meteen '</table>' (getest door meteen na het toevoegen ff de innerHTML in een alert te gooien) achteraan terwijl ik juist eerst de inhoud van die table erachteraan wil zetten en vervolgens zelf afsluit met '</table>'. Iemand enig idee waarom js dit doet en hoe ik dit kan vermijden?

Alvast bedankt voor reactie!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 14:53

gorgi_19

Kruimeltjes zijn weer op :9

Javascript / DHTML hoort thuis in Webdesign & Graphics

>> Webdesign & Graphics

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
sorry

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Hoe moeten wij jouw probleem analyseren zonder 1 letter code :?

Wellicht ff wat meer code in dit topic plaatsen, zodat we kunnen kijken waar het probleem zich wellicht bevind :)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-05 18:53

Bosmonster

*zucht*

1. niet met innerHTML werken maar met createElement etc.
2. als je het al wel met innerHTML wil doen genereer dan eerst de complete html en verwacht niet dat de browser je half-affe html accepteert
3. een span != layer (over het algemeen heeft men het dan over een div)
4. een span mag geen table bevatten...

[ Voor 49% gewijzigd door Bosmonster op 22-11-2004 13:45 ]


  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

Verwijderd schreef op maandag 22 november 2004 @ 13:33:
Maar zodra ik bij een lege span aan de innerHTML '<table>' toevoeg gooit hij er meteen '</table>' (getest door meteen na het toevoegen ff de innerHTML in een alert te gooien) achteraan terwijl ik juist eerst de inhoud van die table erachteraan wil zetten en vervolgens zelf afsluit met '</table>'. Iemand enig idee waarom js dit doet en hoe ik dit kan vermijden?
Dit is niet iets wat JS doet, jij schrijft alleen een <table> en de browser completeerd die automatisch met een </table> omdat je anders involledige tags krijgt.

+ wat Bosmonster zegt :)

Verwijderd

Topicstarter
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<script language="javascript">

function test()
{
    document.getElementById('testspan').innerHTML = '<table width="100%">\n';
    alert(document.getElementById('testspan').innerHTML);
    document.getElementById('testspan').innerHTML += '<tr><td>\n';
    document.getElementById('testspan').innerHTML += '<select id="selector">\n';
    document.getElementById('testspan').innerHTML += '</select>\n';
    document.getElementById('testspan').innerHTML += '</td></tr></table>\n';

    document.getElementById('selector').options[0] = new Option(1,1);
    document.getElementById('selector').options[1] = new Option(2,2);

}

</script>


Heb ff een testfunctie geschreven.
bij die alert krijg is dus hetvolgende te zien: <table width="100%"></table>

hopelijk ist zo wat duidelijker?

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Wat Bosmonster dus roept ;) (met nadruk op geen tabel in een span plaatsen)

Je moet in dit geval in 1 keer je innerHTML schrijven :)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Verwijderd

Topicstarter
hmm, volgende keer eerst lezen dan posten..

kijk het is de bedoeling dat er strax een tabel wordt gecreeerd met een variabel aantal rijen met daarin <select>'s.

standaard is dit 1 rij, maar met knoppen toevoegen en verwijderen wil ik deze tabel uitbreiden / inkrimpen met 1 rij. vandaar dat ik dit met innerHTML d8 te doen, dan hoef ik alleen een lusje te bouwen wat die rijen en <select>'s neerzet en deze vervolgens nog even te vullen in een lusje.

Hmmjah, dat ik alles eerst ff in een string moet gooien had ik me al bedacht.

Kan me alleen nog iemand vertellen waarom ik geen table in een span mag zetten???

[ Voor 22% gewijzigd door Verwijderd op 22-11-2004 14:03 ]


Verwijderd

Topicstarter
had ff geen zin om er een nieuw topic voor te openen dus vraag het nog maar een keertje hier, is nl. nogal van belang:
Waarom mag ik geen table in een span zetten???

  • XangadiX
  • Registratie: Oktober 2000
  • Laatst online: 08:42

XangadiX

trepanatie is zóó kinderachtig

waarom moet de <tabel> in de span, kan die niet gewoon erbuiten zodat je alleen de content bouwt?

ik zou het trouwens niet weten waarom span geen <table> zou mogen bevatten, maar omdat span een inline tag is, bedoeld om stukjes binnen devisions te accentueren of van een class te voorzien kan ik me voorstellen dat daarbinnen geen non-inline tags mogen oid. Maar er zijn vast mensen die het niet uit hun duim zuigen en het echt weten ;)

[ Voor 66% gewijzigd door XangadiX op 22-11-2004 14:27 ]

Stoer; Marduq


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

1. Zoek zoals Bossie al roept naar createElement ;)
2. Je topic onnodig kicken hoeft niet!
3. De span-tag is een inline element en deze mag geen block-element (table bijvoorbeeld) bevatten :)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Verwijderd

XangadiX schreef op maandag 22 november 2004 @ 14:25:
ik zou het trouwens niet weten waarom span geen <table> zou mogen bevatten, maar omdat span een inline tag is, bedoeld om stukjes binnen devisions te accentueren of van een class te voorzien kan ik me voorstellen dat daarbinnen geen non-inline tags mogen oid. Maar er zijn vast mensen die het niet uit hun duim zuigen en het echt weten ;)
bijna :D

span is idd een inline element en die mogen geen blocklevel elementen bevatten. Verder heb je het doel van een span een beetje fout. je kan overal namelijk een class aan hangen, en accentueren doe je iha met <em> (van emphasize; nadruk)

een span is een soort red-element. Als je content hebt die echt niet binnen 1 van de andere elementen past heb je span altijd nog. iha heb je die nauwelijks nodig.

Je zou je table wel in een div kunnen zetten (da's een blocklevel element), maar dan nog is het waarschijnlijk helemaal niet nodig. Twee wrappers om elkaar is eigenlijk alleen maar handig als je speciale opmaakdingen wilt (bv de ene wrapper een background links geven en de andere rechts).

Verwijderd

Topicstarter
okee, ik maak het nu allemaal met document.createElement.

blijf ik nog 1 vraagje overhouden, als ik removeNode gebruik en ik wis bijv. de hele tabel, wordt alles wat erinstaat dan ook gewist of moet ik dit handmatig nog doen?
Pagina: 1