29. august 2010 - 18:00Der 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; }
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; }
} $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" />',
<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)
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" />', ?>
* 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];
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.
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.