Toon posts:

[js/dom]Gecreëerde plaatjes zijn onzichtbaar.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik probeer om via javascript een rij met opties in te voegen. Dit gaat prima, met uitzondering van de plaatjes. Die zijn gewoon niet zichtbaar.

Dit is de HTML waartegen ik het script run:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<form action="http://forum.fok.nl//fok/post_reply/714060" method="post">
    <input type="hidden" name="topic" value="714060" />
    <table class="table">
        <tr>
            <td class="gen3b" colspan="2">Snel reageren</td>
        </tr>
        <tr>
            <td valign="top" class="gen1bw">&nbsp;&nbsp;je bericht:</td>
            <td class="gen1b"><textarea name="message" rows="5" cols="100"></textarea></td>
        </tr>
        <tr>
            <td class="gen1bw">&nbsp;</td>
            <td class="gen1b">
                <input type="submit" name="preview" value="Preview" accesskey="p" />
                <input type="submit" name="submit" value="Invoeren" accesskey="s" />
            </td>
        </tr>
    </table>
</form>


En dit is het scriptje:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
// QuickPI: Post-Icons voor Snel Reageren
function ff_light_QuickPI(doc)
{
    // check of we wel kunnen Snel Reageren
    var form=doc.getElementsByTagName('form')[1];
    if (!form)
    {
        return false;
    }
    
    // hier moeten we de posticons in frutten
    var postTable=form.getElementsByTagName('tbody')[0];
    var firstRow=postTable.getElementsByTagName('tr')[1];
    
    // declareer alle gewenste posticons
    var postIcons=new Array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,99);
    
    // tabelrij
    var tr=doc.createElement('tr');
    
    // linkerkolom
    var tdLeft=doc.createElement('td');
    var spanLeft=doc.createElement('span');
    var txtLeft=doc.createTextNode('Posticon:');
    
    tdLeft.setAttribute('class','gen1bw');
    spanLeft.setAttribute('class','normaltxt');
    spanLeft.setAttribute('style','padding-left: 8px;');
    spanLeft.appendChild(txtLeft);
    tdLeft.appendChild(spanLeft);
    
    // rechterkolom
    var tdRight=doc.createElement('td');
    var input=new Array(postIcons.length);
    var label=new Array(postIcons.length);
    var img=new Array(postIcons.length);
    
    for (var i=0;i<postIcons.length;i++)
    {
        input[i]=doc.createElement('input');
        input[i].setAttribute('name','posticon');
        input[i].setAttribute('id','pi'+postIcons[i]);
        input[i].setAttribute('type','radio');
        
        label[i]=doc.createElement('label');
        label[i].setAttribute('for','pi'+postIcons[i]);
        
        img[i]=doc.createElement('img');
        img[i].setAttribute('src','http://forum.fok.nl/templates/fokforum_light/i/c/'+postIcons[i]+'.gif');
        img[i].setAttribute('alt','icoon');
        img[i].setAttribute('height',15);
        img[i].setAttribute('width',15);
        
        label[i].appendChild(img[i]);
        input[i].appendChild(label[i]);
        tdRight.appendChild(input[i]);
    }
    
    tr.appendChild(tdLeft);
    tr.appendChild(tdRight);
    
    postTable.insertBefore(tr, firstRow);
    
    return true;
}


Als ik na het uitvoeren van het script naar de bron kijk, zie ik het volgende:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<tbody>
    <tr>
        <td class="gen3b" colspan="2">Snel reageren</td>
    </tr>
    <tr>
        <td class="gen1bw"><span style="padding-left: 8px;" class="normaltxt">Posticon:</span></td>
        <td>
            <input id="pi1" name="posticon" type="radio"><label for="pi1">[img]"http://forum.fok.nl/templates/fokforum_light/i/c/1.gif"[/img]</label>
            ... meer hier 
        </td>
    </tr>
    <tr>
        <td class="gen1bw" valign="top">&nbsp;&nbsp;je bericht:</td>
        <td class="gen1b"><textarea name="message" rows="5" cols="100"></textarea></td>
    </tr>
    <tr>
        <td class="gen1bw">&nbsp;</td>
        <td class="gen1b">
            <input name="preview" value="Preview" accesskey="p" type="submit">
            <input name="submit" value="Invoeren" accesskey="s" type="submit">
        </td>
    </tr>
</tbody>


Prima code, Firefox bouwt er zelfs netjes een <tbody> omheen :)
Alleen, de plaatjes worden niet zichtbaar, en ik begrijp niet waarom. De img-tag klopt, en het plaatje bestaat gewoon, en anders zou ik natuurlijk sowieso de alt-tekst 'icoon' verwachten. Ik krijg alleen de options te zien.

Ik snap er niks van, voor zover ik weet is alle code geldig, en als ik de code die daar staat rechtstreeks in de pagina plak werkt het wel. Alleen als het door het script wordt gedaan, werkt het niet.

Mis ik hier iets?

[ Voor 21% gewijzigd door Verwijderd op 14-06-2005 00:37 ]


  • André
  • Registratie: Maart 2002
  • Laatst online: 06-05 11:13

André

Analytics dude

Hoe kom je aan die realtime bron dan? Vraag je die op met JS? Want dit zou dan echt wel moeten werken. Heb je misschien ook een url waarop je een voorbeeld hebt?

  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
JavaScript:
1
2
        label[i].appendChild(img[i]);
        input[i].appendChild(label[i]);


Lijkt me niet zo handig om label een als childNode aan een input toe te kennen ;)

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


Verwijderd

Topicstarter
André schreef op dinsdag 14 juni 2005 @ 00:33:
Hoe kom je aan die realtime bron dan? Vraag je die op met JS? Want dit zou dan echt wel moeten werken. Heb je misschien ook een url waarop je een voorbeeld hebt?
Firefox heeft daar een hele handige feature voor. Als je een stuk tekst selecteert en rechtsklikt kun je kiezen voor 'Bron van selectie bekijken'. Daarbij krijg je de bron te zien, inclusief aanpassingen door scripts en Firefox zelf. Een lifesaver, die functie ;)
faabman schreef op dinsdag 14 juni 2005 @ 00:35:
JavaScript:
1
2
        label[i].appendChild(img[i]);
        input[i].appendChild(label[i]);


Lijkt me niet zo handig om label een als childNode aan een input toe te kennen ;)
Dat was inderdaad het probleem. :)
Mijn hartelijke dank.

Wel grappig trouwens dat het nu ik het aanpas, wél werkt, maar dat de HTML-code die er uitkomt hetzelfde is.

[ Voor 37% gewijzigd door Verwijderd op 14-06-2005 00:46 ]