Avatar billede kernelx Juniormester
29. juli 2005 - 10:42 Der er 10 kommentarer og
1 løsning

Javascript/DOM - id-navne?

Hi, jeg har in page
---
<html>
    <head>
        <title>test</title>
    </head>
    <body>
        <form action="test.html" method="POST">
            <input type="text" id="testabc" name="testabc" /><br />
            <input type="text" id="qwerty" name="qwerty" /><br />
            <input type="text" id="mnbvcxz" name="mnbvcxz" /><br />
            <input type="submit" value="ok" />
        </form>
<script language="javascript">
<!--
function get_id_names ()
{
    for (counter = 0; counter < document.ncheckbox.elements.length; counter++)
    {
        if (document.ncheckbox.elements[counter].type == "text")
        {
            alert (document.ncheckbox.elements[counter].name);
            // "name" findes ikke
        }
    }
}
get_id_names ();
//-->
</script>
    </body>
</html>
---

hvordan kan jeg få funktionen get_id_names() til - at den alert'er med alle navne på id'erne fra textfelterne (fra attributerne id, eller name)?

med venlig hilsen
KernelX
Avatar billede roenving Novice
29. juli 2005 - 10:50 #1
Hvornår skal kaldet ske ?-)

-- jeg kan godt se, at du bare har placeret det nederst, men du har vel en kontekst, for hvis vi slipper adskilligt lettere ved at kalde funktionen med parameter, skal vi vel det ?o]

-- men generelt, når vi tager udgangspunkt i DOM-binding, skal man have fat i formen med:

var f = document.getElementsByTagName("form")[0] ...

-- og så henter man alle inputs med:

var elms = f.getElementsByTagName("input");//Hvis alle elementer i formen: "*"
Avatar billede kernelx Juniormester
29. juli 2005 - 11:46 #2
mit problem er, at jeg ikke ved navnene på text-felterne.
og dem skal jeg finde ud af.
baggrunden er, at der er nogle tekstfelter-navne som f.eks. begynder med t, andre, som begynder med m. Og rækkefølgen af hvilke navne det er - er tilfældigt. Jeg vil nu kun ændre inholdet af de input-textfelter, som begynder med t.
og derfor har jeg brug for navnene. dem checker jeg så med regexp.
...
det skal ske, når jeg klicker på en link, som kalder funktionen
Avatar billede roenving Novice
29. juli 2005 - 11:52 #3
Lige det at checke første bogstav med en regexp er nok overkill, og ifølge hvad jeg har hørt signifikant langsommere end bare at teste på hvad første bogstav er ...

-- f.eks.

<a href="#" onclick="chFields();return false;">Ændr t-felter</a>

<script type="text/javascript">
function chFields(){
  var f = document.getElementsByTagName("form")[0];
  var elms = f.getElementsByTagName("input");
  for(i=0;elms.length>i;i++){
    if(elms[i].type == "text" && elms[i].name.indexOf("t") == 0){
      //elms[i] er et input-felt, hvis navn starter med 't' !-)
    }
  }
}
</script>
Avatar billede roenving Novice
29. juli 2005 - 11:58 #4
-- og jeg lavede lige en simpel test af performance, i den var regexp langsommere end simpel indexOf()==0 med en faktor 6 !-)

-- og du kan jo selv prøve, hvis du er interesseret:

<script language="javascript" type="text/javascript">
var txt = "bjlkjhj";
var st1 = new Date().getTime(),num=0;
for(i=0;10000>i;i++){
  if(txt.match(/^b/))
    num++
}
var tim1 = new Date().getTime() - st1;
var st2 = new Date().getTime(),num=0;
for(i=0;10000>i;i++){
  if(txt.indexOf('b')==0)
    num++
}
var tim2 = new Date().getTime() - st2;
alert(tim1 +"\n"+ tim2);
</script>
Avatar billede kernelx Juniormester
29. juli 2005 - 12:02 #5
mit primære problem er, at den ikke viser navnene på id'erne fra input/test-felterne
Avatar billede roenving Novice
29. juli 2005 - 12:04 #6
Du skal vel gøre noget med felterne, når de opfylder betingelsen:

    if(elms[i].type == "text" && elms[i].name.indexOf("t") == 0){
Avatar billede roenving Novice
29. juli 2005 - 12:04 #7
name og id kan du jo skifte mellem ...
Avatar billede roenving Novice
29. juli 2005 - 12:06 #8
Hov, skaber du elementerne med javascript-DOM og createElement ?-)

-- så skal du nok benytte dig af id, for IE vil af en eller anden grund ikke sætte en name-property på sådanne elementer !-)
Avatar billede kernelx Juniormester
29. juli 2005 - 12:25 #9
mange tak, det virkede meget fint.
husk at skrive et eller andet som svar.
Avatar billede roenving Novice
29. juli 2005 - 12:35 #10
Velbekomme '-)
Avatar billede roenving Novice
30. juli 2005 - 00:14 #11
-- og takfor point ;~}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester