Toon posts:

[PHP + JS] HTMLentities en quote

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik blijf problemen houden met een '

Ik heb het volgende:
PHP:
1
$this->m_sKnopName = htmlentities($s_sName, ENT_QUOTES);


Hierdoor krijg ik de volgende code:
code:
1
getElementById('Gaat dit ook goed?' sb407d077f8ce8e').className = 'knopOver';


en dit werkt niet (de mouseOver) en ik krijg geen JS foutmelding.
Maar als ik er het volgende van maak:
code:
1
getElementById('Gaat dit ook goed? sb407d077f8ce8e').className = 'knopOver';


Dan werkt het prima..??

ff wat meer code voor de duidelijkheid ;)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$this->m_sKnopName = htmlentities("Gaat dit ook goed?' sb", ENT_QUOTES);

$s_sDIV .= "onClick=\"".$this->m_sKnopTarget."location = '".$this->m_sKnopLink."';\" ";
$s_sDIV .= "onMouseOver=\"this.className= '".$this->m_sKnopClassOver."'; getElementById('".$s_sKnopID."').className = '".$this->m_sKnopClassOver."';\" ";
$s_sDIV .= "onMouseOut=\"this.className= '".$this->m_sKnopClass."'; getElementById('".$s_sKnopID."').className = '".$this->m_sKnopClass."';\" ";
$s_sDIV .= ">\n";
    $s_sDIV .= "\t\t<table width=\"".$this->m_iKnopWidth."\" height=\"".$this->m_iKnopHeight."\" border=\"0\" cellpadding=\"".$this->m_iKnopPadding."\" cellspacing=\"0\">\n";
        $s_sDIV .= "\t\t\t<tr height=\"".$this->m_iKnopHeight."\" valign=\"".$this->m_sKnopValign."\">\n";
            $s_sDIV .= "\t\t\t\t<td width=\"".$this->m_iKnopWidth."\" align=\"".$this->m_sKnopHalign."\">";
                $s_sDIV .= "<font id=\"".$s_sKnopID."\" class=\"".$this->m_sKnopClass."\">".$this->m_sKnopName."</font>";
            $s_sDIV .= "</td>\n";
        $s_sDIV .= "\t\t\t</tr>\n";
    $s_sDIV .= "\t\t</table>\n";
$s_sDIV .= "\t</div>\n";


Dit levert de volgende code op:
code:
1
2
3
4
5
6
7
<div class="knop" style= "height=20; width=100; left=5; top=47; " onClick="location = '';" onMouseOver="this.className= 'knopOver'; getElementById('Gaat dit ook goed?' sb407d077f8ce8e').className = 'knopOver';" onMouseOut="this.className= 'knop'; getElementById('Gaat dit ook goed?' sb407d077f8ce8e').className = 'knop';" >
    <table width="100" height="20" border="0" cellpadding="0" cellspacing="0">
        <tr height="20" valign="middle">
            <td width="100" align="center"><font id="Gaat dit ook goed?' sb407d077f8ce8e" class="knop">Gaat dit ook goed?' sb</font></td>
        </tr>
    </table>
</div>

Verwijderd

misschien moet je gewoon een slash voor je enkele qoute zetten?

code:
1
getElementById('Gaat dit ook goed?\' sb407d077f8ce8e').className = 'knopOver';

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Dit probleempje zit 'm in je Javascript, -> Webdesign & Graphics

Professionele website nodig?


Verwijderd

Topicstarter
idd :P
Ik moet met 2 verschillende vars werken.

Ik had addslashes al geprobeert, maar dat werkte niet. Dat komt omdat de volgende string in de code niet als hetzelfde gezien wordt....

Met addslashes kreeg ik dit:
code:
1
2
3
4
5
6
7
<div class="knop" style= "height=20; width=100; left=5; top=47; " onClick="location = '';" onMouseOver="this.className= 'knopOver'; getElementById('Gaat dit ook goed?\' sb407d0a49bb45e').className = 'knopOver';" onMouseOut="this.className= 'knop'; getElementById('Gaat dit ook goed?\' sb407d0a49bb45e').className = 'knop';" >
    <table width="100" height="20" border="0" cellpadding="0" cellspacing="0">
        <tr height="20" valign="middle">
            <td width="100" align="center"><font id="Gaat dit ook goed?\' sb407d0a49bb45e" class="knop">Gaat dit ook goed?\' sb</font></td>
        </tr>
    </table>
</div>


Maar dit:
code:
1
getElementById('Gaat dit ook goed?\' sb407d0a49bb45e').className = 'knopOver';

en dit:
code:
1
<font id="Gaat dit ook goed?\' sb407d0a49bb45e" class="knop">


is natuurlijk niet hetzelfde |:(

  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
aangezien het antwoord (escapen) al gegeven is, maar even een aantal opmerkingen over de html die je gebruikt:

- je inline css is verkeerd; height=20; moet zijn height:20px;
- ik weet niet precies in wat voor situatie je bovenstaand stukje html gebruikt, maar het zuigt :)... een div met de class knop (dus ik neem aan dat het een knop is) met daarin een tabel :? met daarin font-tags :?, lijkt me een beetje overdone... wat je imho beter kunt doen is of:

HTML:
1
<a href="" class="knop"></a>


waarbij je je style doet via

Cascading Stylesheet:
1
2
3
a.knop:link{}

a.knop:hover{}


en voor het geval je een heel menu hebt:

HTML:
1
2
3
4
5
<ul class="menu">
  <li><a href=""></a></li>
  <li><a href=""></a></li>
  <li><a href=""></a></li>
</ul>


wat je styled

Cascading Stylesheet:
1
2
3
4
5
ul.menu{list-style-type:none; padding:0px; margin:0px;}

ul.menu li a:link{}

ul.menu li a:hover{}



en de voordelen :? :
- minder te scripten in PHP
- minder te stylen in HTML
- geen gebruik van javascript

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


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

Bosmonster

*zucht*

'Gaat dit ook goed? sb407d077f8ce8e'

is ook niet echt een lekkere ID voor een element, vind je ook niet?

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Hoe kom je er dan ook bij om dat soort tekens in een ID te gebruiken? Een ID mag enkel letters, cijfers en het - _ : of . teken bevatten, en moet beginnen met een letter. Lees de specificaties er maar op na: http://www.w3.org/TR/html401/types.html#type-name

Intentionally left blank


Verwijderd

Topicstarter
Sorry dat ik wat laat reageer ;)

Maar ff een reactie op de bovenstaande 3 berichten:
De code die ik boven laat zien wordt gegenereerd dmv een php class. Daarom is de html wat omslachtiger, er moet wat ruimte zijn voor aanpassingen.
Aangezien je deze code later niet meer bewerkt kies ik voor gebruiksvriendelijkheid aan de kant die je later wel bewerkt.
Vandaar wat rare contructies die normaal niet nodig zijn.

Maar jullie hebben gelijk wat betreft de css en w3c standaarden. Deze heb ik ook aangepast.
Pagina: 1