Seite 1 von 1

JS: replace()

Verfasst: So Okt 09, 2011 9:06 pm
von naums
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

Re: JS: replace()

Verfasst: So Okt 09, 2011 9:31 pm
von cloidnerux
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

Re: JS: replace()

Verfasst: So Okt 09, 2011 10:34 pm
von naums
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?

Re: JS: replace()

Verfasst: Mo Okt 10, 2011 9:20 am
von Xin
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.

Re: JS: replace()

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

Code: Alles auswählen

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

Re: JS: replace()

Verfasst: Mo Okt 10, 2011 4:16 pm
von naums
@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.

Re: JS: replace()

Verfasst: Mi Okt 12, 2011 2:22 pm
von oenone
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."