JS: replace()

Fragen zum Thema HTML, JavaScript, PHP
Antworten
Benutzeravatar
naums
Beiträge: 740
Registriert: Sa Jan 02, 2010 10:40 pm
Kontaktdaten:

JS: replace()

Beitrag von naums » So Okt 09, 2011 9:06 pm

Hallihallöchen,

folgender Code:

Code: Alles auswählen

function ChangeSystemsys(element, mode, id)
{
    if (element.border==2)
    {
        document.getElementById(mode).value.replace(id+',', "");
        element.border=0;
    }
    else 
    {
        document.getElementById(mode).value+=id+',';
        element.border=2;
    }
}
soll bei einmaligen Klicken eines Buttons einen Eintrag in mode.value machen, beim zweiten Mal klicken diesen wieder entfernen. Warum tut er das beim 2. Klicken nicht?

mode.value enthält folgendes:
dreamcastatari,nes,gamecube,atari,dreamcast,playstation3,xbox,
und bekommt id übergeben, zb. "xbox"

Code: Alles auswählen

<td align="center" style="text-align:center">
                <img OnClick="ChangeSystemsys(this, 'sys', 'xbox')" src="pict/system_max/xbox.png" title="Microsoft Xbox" height="18px" id="sysxbox"></td>
mfg Naums
.globl truth
truth:
mov r0, #42
mov pc, lr

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: JS: replace()

Beitrag von cloidnerux » So Okt 09, 2011 9:31 pm

Teste doch mal, ob dein Code das element.border==2 richtg erkennt.
Und dann arbeitet Replace mit regulären Ausdrücken:
http://de.selfhtml.org/javascript/objek ... tm#replace
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
naums
Beiträge: 740
Registriert: Sa Jan 02, 2010 10:40 pm
Kontaktdaten:

Re: JS: replace()

Beitrag von naums » So Okt 09, 2011 10:34 pm

wunderbar erklärt, bringt mich aber leider nicht weiter.
element.Border==2 nimmt er an, schließlich setzt er die Grenzlinie auf 0. Das klappt. Allerdings das replace() nicht. -.-'

Code: Alles auswählen

function ChangeSystemsys(element, mode, id)
{
    if (element.border==2)
    {
        document.getElementById(mode).value.replace(/id/gi, "");
        element.border=0;
    }
    else 
    {
        document.getElementById(mode).value+=id+\',\';
        element.border=2;
    }
}
ps: ich hab das gefühl der sieht das /id/gi nicht als Variable. wie kann ich das erreichen?
.globl truth
truth:
mov r0, #42
mov pc, lr

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: JS: replace()

Beitrag von Xin » Mo Okt 10, 2011 9:20 am

naums hat geschrieben: document.getElementById(mode).value.replace(/id/gi, "");
document.getElementById(mode).value+=id+\',\';
Das ganze sieht für mich noch nicht nach Code aus, was aber auch daran liegen kann, dass ich mir JavaScript seit mindestens 5 Jahren nicht mehr freiwillig angesehen habe.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

C@mper
Beiträge: 88
Registriert: Mo Nov 15, 2010 3:30 pm

Re: JS: replace()

Beitrag von C@mper » Mo Okt 10, 2011 3:28 pm

Code: Alles auswählen

document.getElementById(mode).value = document.getElementById(mode).value.replace(id+',', '');

Benutzeravatar
naums
Beiträge: 740
Registriert: Sa Jan 02, 2010 10:40 pm
Kontaktdaten:

Re: JS: replace()

Beitrag von naums » Mo Okt 10, 2011 4:16 pm

@C@mper: sieht logisch aus, ich probiers mal.

Edit: klappt. sehr gut. Danke :) Dass ich da nicht selbst dran gedacht habe... naja... bin davon ausgegangen, dass es ne Methode ist, und somit selbst den String verändert.
.globl truth
truth:
mov r0, #42
mov pc, lr

Benutzeravatar
oenone
Beiträge: 223
Registriert: Do Sep 01, 2011 2:42 pm
Wohnort: Bremen
Kontaktdaten:

Re: JS: replace()

Beitrag von oenone » Mi Okt 12, 2011 2:22 pm

Strings sind in JavaScript unveränderlich: aus dem Rhino-Buch: "In JavaScript, strings are immutable objects, which means that the characters within them may not be changed and that any operations on strings actually create new strings."

Antworten