Avatar billede loumann Praktikant
29. august 2010 - 18:00 Der er 14 kommentarer og
1 løsning

Hvordan giver jeg flere ID til funtionen getElementById?

Jeg vil gerne gøre brugeren i stand til at indsætte et specialtegn (fx á eller é) i et dynamisk tekstfelt på en webside ved klik på billede. Jeg kan kun få det til at virke for det første tekstfelt (med id "answer1"). Problemet er at jeg ikke ved hvordan jeg skal sætte flere ID´er ind i funktionen getElementById.

Hvordan får jeg "answer2" aktiveret?

Min koder ser sådan ud:

<head>
<script type="text/javascript">
function insert(ins) {
el = document.getElementById('answer1');

    if (el.setSelectionRange){
        el.value = el.value.substring(0,el.selectionStart) + ins + el.value.substring(el.selectionStart,el.selectionEnd) + el.value.substring(el.selectionEnd,el.value.length);
    }
    else if (document.selection && document.selection.createRange) {
        el.focus();
        var range = document.selection.createRange();
        range.text = ins + range.text;
    }
   
}

</script>
</head>

<form action="results_preterito_regular.php" method="post">
  <?php
 
if (isset($_POST['cmdSubmit'])) {

}
$n = 20;
$links=array(
                '<b>Visitar</b> - at besøge<br>      Yo   
                <input type="text" size="8" name="answer1" >   Madrid el año pasado</p>
                <img id="á" onclick="insert(this.id);"  src="images_char/1.gif" />
                <img id="é" onclick="insert(this.id);" "  src="images_char/2.gif" />
                ',        
                       
               
                '<b>Aceptar</b> - at tage imod<br>      Juanita  
                <input type="text" size="8" name="answer2" >  la invitación</p>
                <img id="á" onclick="insert(this.id);"  src="images_char/1.gif" />
                <img id="é" onclick="insert(this.id);"  src="images_char/2.gif" />

Håber nogen derude kan hjælpe!
Avatar billede majbom Novice
29. august 2010 - 19:02 #1
du kan jo ændre det til:

function insert(ins, elm) {
el = document.getElementById(elm);

og så sende id'et på det element du skal have fat i, med til funktionen:

"insert(this.id, 'answer1');"
Avatar billede loumann Praktikant
29. august 2010 - 22:24 #2
1000 tak for hurtigt svar.

Jeg har rettet efter dine instrukser, men det virker stadig ikke. (Jeg er lidt i tvivl om jeg skal skrive "answer1" eller 'answer1'- den skriver answer med sort, hvis jeg skriver ' i stedet for ".

Her er den nye kode. Hvad er galt?

<head>
<script type="text/javascript">

function insert(ins, elm) {
el = document.getElementById(elm);

    if (el.setSelectionRange){
        el.value = el.value.substring(0,el.selectionStart) + ins + el.value.substring(el.selectionStart,el.selectionEnd) + el.value.substring(el.selectionEnd,el.value.length);
    }
    else if (document.selection && document.selection.createRange) {
        el.focus();
        var range = document.selection.createRange();
        range.text = ins + range.text;
    }
   
}

</script>

</head>

<form action="results_preterito_regular.php" method="post">
  <?php
 
if (isset($_POST['cmdSubmit'])) {

}
$n = 20;
$links=array(
                '<b>Visitar</b> - at besøge<br> &nbsp;&nbsp;&nbsp;&nbsp; Yo &nbsp; 
                <input type="text" size="8" name="answer1" > &nbsp; Madrid el año pasado</p>
                <img id="á" onclick="insert(this.id, "answer1")"  alt="Indsæt et á i tekstfeltet"  src="images_char/1.gif" />
                <img id="é" onclick="insert(this.id, "answer1")" alt="Indsæt et é i tekstfeltet"  src="images_char/2.gif" />
                ',        
                       
               
                '<b>Aceptar</b> - at tage imod<br> &nbsp;&nbsp;&nbsp;&nbsp; Juanita &nbsp;
                <input type="text" size="8" name="answer2" >&nbsp; la invitación</p>
                <img id="á" onclick="insert(this.id, "answer2");" alt="Indsæt et á i tekstfeltet"  src="images_char/1.gif" />
                <img id="é" onclick="insert(this.id, "answer2");" alt="Indsæt et é i tekstfeltet"  src="images_char/2.gif" />',
Avatar billede mclemens Nybegynder
30. august 2010 - 00:33 #3
<img id="á" onclick="insert(this.id, "answer1")"  alt="Indsæt et á i tekstfeltet"  src="images_char/1.gif" />
                <img id="é" onclick="insert(this.id, "answer1")" alt="Indsæt et é i tekstfeltet"  src="images_char/2.gif" />
                ',   

->

                <img id="á" onclick="insert(this.id, \'answer1\')"  alt="Indsæt et á i tekstfeltet"  src="images_char/1.gif" />
                <img id="é" onclick="insert(this.id, \'answer1\')" alt="Indsæt et é i tekstfeltet"  src="images_char/2.gif" />
                ',           

og
                <img id="á" onclick="insert(this.id, "answer2");" alt="Indsæt et á i tekstfeltet"  src="images_char/1.gif" />
                <img id="é" onclick="insert(this.id, "answer2");" alt="Indsæt et é i tekstfeltet"  src="images_char/2.gif" />',

->

                <img id="á" onclick="insert(this.id, \'answer2\');" alt="Indsæt et á i tekstfeltet"  src="images_char/1.gif" />
                <img id="é" onclick="insert(this.id, \'answer2\');" alt="Indsæt et é i tekstfeltet"  src="images_char/2.gif" />',



Forklaringen er at hvis du starter en event handler med "
onclick="noget" - må der ikke benyttes " imellem "-erne
... ellers hopper du ud af event handleren.
- Derfor brugen af '-er

(Havde du sagt onclick='noget' er det modsatte gældende)

... men når du så skriver i en php echo/array m.v. skal du escape det tegn som du har benyttet til at omklamme php delen med - derfor \' (eller \" hvis du havde brugt "-er i php omklamringen)
Avatar billede majbom Novice
30. august 2010 - 07:33 #4
ja, den havde jeg lige misset, du skal enten escape dine gåseøjne rundt om answer1: \" eller bruge '
Avatar billede loumann Praktikant
30. august 2010 - 09:09 #5
Tak for jeres råd mclemens og splazz, men det fungerer stadig ikke.

Kan det være koden i head-delen, der er noget galt med?

<head>
<script type="text/javascript">
function insert(ins) {
function insert(ins, elm) {
el = document.getElementById(elm);


    if (el.setSelectionRange){
        el.value = el.value.substring(0,el.selectionStart) + ins + el.value.substring(el.selectionStart,el.selectionEnd) + el.value.substring(el.selectionEnd,el.value.length);
    }
    else if (document.selection && document.selection.createRange) {
        el.focus();
        var range = document.selection.createRange();
        range.text = ins + range.text;
    }
   
}


</script>

</head>

<?php
 
if (isset($_POST['cmdSubmit'])) {

}
$n = 20;
$links=array(
                '<b>Visitar</b> - at besøge<br>      Yo   
                <input type="text" size="8" name="answer1" >   Madrid el año pasado</p>
                <img id="á" onclick="insert(this.id, \'answer1\');"  alt="Indsæt et á i tekstfeltet"  src="images_char/1.gif"/>
                <img id="é" onclick="insert(this.id, \'answer1\');" alt="Indsæt et é i tekstfeltet"  src="images_char/2.gif" />
                ',                   
               
                '<b>Aceptar</b> - at tage imod<br>      Juanita  
                <input type="text" size="8" name="answer2" >  la invitación</p>
                <img id="á" onclick="insert(this.id, \'answer2\');" alt="Indsæt et á i tekstfeltet"  src="images_char/1.gif" />
              <img id="é" onclick="insert(this.id, \'answer2\');" alt="Indsæt et é i tekstfeltet"  src="images_char/2.gif" />',
?>
Avatar billede mclemens Nybegynder
30. august 2010 - 09:20 #6
Det var lidt sent igår...

*
function insert(ins) {
function insert(ins, elm) {
el = document.getElementById(elm);
*
insert(this.id, \'answer1\');
*
<input type="text" size="8" name="answer1" >  Madrid el año pasado</p
*

... Du har defineret function insert to gange
- Slet den første function insert(ins) {

... Du sender tekststrengen answer1 til funktionen,
og fange elementet via getElementById, men input feltet
har ikke det nævnte id.
- tilføj henholdsvis id="answer1" og id="answer2" til de to inputs
- eller ret el = document.getElementById(elm); til
el = document.getElementsByName(elm)[0];
Avatar billede loumann Praktikant
30. august 2010 - 10:04 #7
Fantastisk! Så kører det.

Tak fordi I gav jer tid til at hjælpe.

Jeg er meget taknemmelig!
Avatar billede majbom Novice
30. august 2010 - 13:02 #8
tfp :)
Avatar billede majbom Novice
30. august 2010 - 13:03 #9
hov... er det med vilje du har nuppet pointene selv??
Avatar billede loumann Praktikant
30. august 2010 - 13:58 #10
Undskyld, jeg er ny bruger her og ved overhovedet ikke, hvad det pointsystem går ud på.

Hvis jeg har taget points fra nogen er det en fejl. Kan skaden gøres god igen?
Avatar billede mclemens Nybegynder
30. august 2010 - 14:23 #11
Let, du opretter et nyt spørgsmål, udlover de 30 point,
- skriver: point til splazz, som overskrift.
- skriver: http://www.eksperten.dk/spm/91760 , i teksten.

kopierer webadressen fra det nye spørgsmål og skriver det herinde
i en kommentar.

- Splazz lægger et svar, og du accepterer hans svar.

... Det er ikke altid at der lægges svar før løsningen er fundet og spørger beder dem der har hjulpet om at lægge et svar.
Avatar billede mclemens Nybegynder
30. august 2010 - 14:23 #12
Og velkommen på eksperten foresten :)
Avatar billede majbom Novice
30. august 2010 - 16:48 #13
-> #10 - det er så i orden, al begyndelse er svær ;)

du ken evt. læse faq'en: http://www.eksperten.dk/faq
Avatar billede vejmand Juniormester
01. september 2010 - 22:10 #14
Avatar billede majbom Novice
02. september 2010 - 07:19 #15
så...
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

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



IT-JOB

Cognizant Technology Solutions Denmark ApS

Senior Test Engineer

Metroselskabet og Hovedstadens Letbane

IT Applikationsmanager

Dynamicweb Software A/S

Marketing Intern (DK)