Javascript HTML ID met square brackets aanroepen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • reshi
  • Registratie: April 2009
  • Laatst online: 16:39
Ik probeer te controleren of een Iframe leeg is of niet met behulp van Javascript. Ik loop echter tegen het volgende probleem aan. Het Iframe heeft geen naam, maar een ID. Dit is normaal gesproken geen probleem maar het ID ziet er bv als volgt uit: form[thetext]content

Volgens http://www.jibbering.com/faq/#propertyAccess zou je met het escapen van de square brackets het ID nog gewoon moeten kunnen aanspreken. Dat lukt me niet.
Ik kom op het volgende uit aan de hand van die oplossing:
document.elements["form[thetext]content"]


Een andere aanpak die ik geprobeerd heb is:
var iframe = document.getElementById('form[thetext]content');
if(iframe == null) alert('Frame not found');

Ook dat werkt niet.

Ik ben niet op zoek naar kant en klaar script, maar als iemand ervaring hier mee heeft en mij in de juiste richting kan sturen dan ben ik waarschijnlijk al geholpen. Zo moeilijk moet dit niet zijn lijkt me? Het lijkt echter iets te specifiek te zijn voor Google om daar een oplossingen te vinden. Ik vond ze tenminste niet na nogal wat uurtjes zoeken.

Alvast bedankt!

Acties:
  • 0 Henk 'm!

  • Amras
  • Registratie: Januari 2003
  • Laatst online: 17:20
Het id dat je gebruikt is niet valide, omdat de karakters '[' en ']' niet zijn toegestaan. Zie:
http://www.w3.org/TR/html4/types.html
ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").

[ Voor 41% gewijzigd door Amras op 16-07-2010 15:37 ]


Acties:
  • 0 Henk 'm!

  • Keeper
  • Registratie: Juni 2001
  • Niet online

Keeper

<3 Ruby

Je moet de brackets dubbel escapen.

http://jsfiddle.net/5LxaF/

Acties:
  • 0 Henk 'm!

Verwijderd

Amras schreef op vrijdag 16 juli 2010 @ 15:37:
Het id dat je gebruikt is niet valide, omdat de karakters '[' en ']' niet zijn toegestaan. Zie:
http://www.w3.org/TR/html4/types.html

[...]
Helemaal waar, maar dit zegt niet dat het niet zal werken. Om te illustreren dat het werkt, hierbij een simpel voorbeeld:
HTML:
1
2
3
4
5
6
7
8
9
10
<!DOCTYPE html>
<html>
    <body>
        <div id="a[b]c">Test.</div>

        <script>
            alert(document.getElementById('a[b]c').innerHTML);
        </script>
    </body>
</html>

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28
Verwijderd schreef op vrijdag 16 juli 2010 @ 15:40:
[...]

Helemaal waar, maar dit zegt niet dat het niet zal werken. Om te illustreren dat het werkt, hierbij een simpel voorbeeld:
Het gedrag is onvoorspelbaar in verschillende browsers en niet gegarandeerd te werken in toekomstige releases.

Beter kun je een oplossing zoeken zonder brackets. Kan me niet voorstellen dat je die perse nodig hebt namelijk.

Acties:
  • 0 Henk 'm!

  • Mike-RaWare
  • Registratie: Februari 2007
  • Niet online
Bosmonster schreef op vrijdag 16 juli 2010 @ 15:43:
[...]


Het gedrag is onvoorspelbaar in verschillende browsers en niet gegarandeerd te werken in toekomstige releases.

Beter kun je een oplossing zoeken zonder brackets. Kan me niet voorstellen dat je die perse nodig hebt namelijk.
Dan heb je zeker nog nooit de select-element in combinatie met PHP gewerkt.

Wheck :V


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28
Mike-RaWare schreef op vrijdag 16 juli 2010 @ 15:51:
[...]

Dan heb je zeker nog nooit de select-element in combinatie met PHP gewerkt.
name != id

In name is het algemeen geaccepteerd om brackets te gebruiken. In ID's is het zinloos en heeft het geen toegevoegde waarde.

[ Voor 17% gewijzigd door Bosmonster op 16-07-2010 15:54 ]


Acties:
  • 0 Henk 'm!

  • reshi
  • Registratie: April 2009
  • Laatst online: 16:39
Bedankt voor alle reacties!

Ik zal de optie van Keeper proberen
"Je moet de brackets dubbel escapen.

http://jsfiddle.net/5LxaF/"

Naast het feit of het wenselijk of niet hoe het nu in elkaar zit... het zit zo in elkaar en de ID naam aanpassen is geen optie, jammer genoeg. Ik zal dus op zoek moeten naar een manier om hier toch mee te werken.

George

Acties:
  • 0 Henk 'm!

  • Peter
  • Registratie: Januari 2005
  • Laatst online: 13-09 17:10
Bosmonster schreef op vrijdag 16 juli 2010 @ 15:43:
[...]


Het gedrag is onvoorspelbaar in verschillende browsers en niet gegarandeerd te werken in toekomstige releases.

Beter kun je een oplossing zoeken zonder brackets. Kan me niet voorstellen dat je die perse nodig hebt namelijk.
In HTML5 zijn brackets toegestaan. Sterker nog, alle tekens (inclusief #) die UTF-8/ISO 10646 beschikbaar stellen, met uitzondering van spaties, mogen worden gebruikt: <div id="♥"> is daarmee ook geldig. Dit wordt door alle browsers, inclusief IE 6, ondersteund. Je moet alleen rekening houden met het escapen van de speciale tekens.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 21:24

.oisyn

Moderator Devschuur®

Demotivational Speaker

Wat heeft UTF-8 daarmee te maken :?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • reshi
  • Registratie: April 2009
  • Laatst online: 16:39
De oplossing met een stukje extra code:

function checkForm() {
var oframe=document.getElementById("jxform[fulltext]_ifr");
var odoc=oframe.contentWindow.document;
if (odoc.body.innerHTML == '<br _mce_bogus="1">') {
var message="Fulltext cannot be empty!";
alert(message);
}
}

Bedankt allen voor de reacties!

Acties:
  • 0 Henk 'm!

  • reshi
  • Registratie: April 2009
  • Laatst online: 16:39
De oplossing voor meer browsers dan alleen firefox:

function checkForm() {
var oframe = document.getElementById("jxform[fulltext]_ifr");
var odoc = oframe.contentWindow.document;
var strlenght = odoc.documentElement.getElementsByTagName('body')[0].innerHTML.length;
if (strlenght < 20) {
var message = "Fulltext cannot be empty!";
alert(message);
}
}

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 21:24

.oisyn

Moderator Devschuur®

Demotivational Speaker

Zou je [code=js]...[/code] tags willen gebruiken?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1