• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

JS - Filter

Status
Für weitere Antworten geschlossen.

burli001

Mitglied
New Problem: Abstand

haLLo....

Bei den Befehl

(list.length>1?list[1]:"")

Wird aLLes in Leerzeichen gesplitet.

Ich hab jetzt folgendes:

Code:
function postToTemplate(template,width,height,paramName,param)
{
    if (parent.input && parent.input.document && parent.input.document.auxForm)
    {
        var wndName = (template+'&'+paramName+'='+param).replace(/[^a-zA-Z0-9]/g,'');
        var wnd = openCenteredWindow('',wndName,width,height);

        parent.input.document.auxForm.target = wndName;
        parent.input.document.auxForm.template.value = template;
        parent.input.document.auxForm.param.value = param;
        parent.input.document.auxForm.param.name = paramName;
        parent.input.document.auxForm.submit();
        return wnd;
    }
}
Wie schaff ich es, dass param gesplitet wird nach Doppelpunkt und nicht nach Leerzeichen?
Bzw, wenn dies nicht klappen sollte, wie schaff ich es, dass er bei parma statt einen Abstand einfach %20 macht?

Ich hab schon versucht mit:

param.replace ('',/[°%20°]/g);

Nur funktioniert nicht...
 
Zuletzt bearbeitet:
Werbung:
Da wird garnix gesplittet. Der Ausdruck
Code:
replace(/[^a-zA-Z0-9]/g,'');
macht nix weiter als alle nicht alphanumerischen Zeichen (^ fungiert als Negierer) in
Code:
template+'&'+paramName+'='+param
durch Nichts zu ersetzen.
Was genau du nun mit dem Doppelpunkt willst konnte ich den wirren Beschreibungen deines Textes nicht entnehmen also bitte nochmal konkreter.
 
Mein Ziel ist, dass bei 'parm', wenn ein abstand existiert, durch ein %20 ersetzt wird...

Nur ich kriegs nicht hin!
 
Werbung:
Das hab ich auch so ähnlich versucht, jedoch ohne erfolg.

Ich habs auch versucht zu splitten mit ":" (nur parm) und dann [0] ausgeben, nur ging das auch nicht...

Das ist irgendwie kommisch.
 
Ich weiss immer noch nicht was du mit dem ":" willst, der hat in der URL nix verloren ausser als Angabe eines Ports.
Vielleicht postest du mal den Inhalt der Variablen "param"
 
Werbung:
Naja, dass wird ja alles nach Leerzeichen gefiltet, sobald ein Abstand dazwischen kommt, glaubt JS das ein neuer Parameter kommt!
Das will ich eben mit den : verhindern.
 
Poste doch mal den Inhalt, sonst kann ich mir kein richtiges Bild machen. Wenn du mir zeigst wie der String vor und nach der Behandlung aussehen soll kann ich dir viel besser helfen. Aus deinen Beschreibungen werd ich nicht schlau...sorry.
 
Ok, ich machs mal so genau wie möglich:

Ich arbeite mit der Chatsoftware > GT-Chat

Da ist in der Settings.dat (wo alles ausgelesen wird), dass so gespeichert:

Code:
profile => 'postToTemplate("profile",600,480,"nickname",(list.length>1?list[1]:""))',

So, wenn der Chat geladen ist, sieht das folgendermaßen so aus:

Code:
 parent.jscommands[' /profile'] = 'postToTemplate(\"profile\",480,390,\"nickname\",(list.length>1?list[1]:\"\"))';

parent.jscommands

Code:
   if (list.length>0 && parent.jscommands && parent.jscommands[' '+list[0]])
    {
        eval(parent.jscommands[' '+list[0]]);
        return;
    }
Jetzt wird das zwar in Leerzeichen gesplitet, jedoch sollte das zweite Wort nichtmehr in Leerzeichen gesplitet werden...

Weil wenn ich z.b. eingebe: /profile das Haus
Glaubt der Chat, er soll nur: /profile das
nehmen...

Ich hoffe, du verstehst jetzt, was ich meine.
 
Werbung:
Ich glaube dein Denkansatz ist falsch.
Code:
list.length>1?list[1]:""
splittet nichts anhand von Leerzeichen.
Wenn ich dich richtig verstanden habe wird folgender String übergeben:
Code:
/profile das Haus
Dieser wird dann sicherlich irgendwo in der Application anhand der enthaltenen Leerzeichen in ein Array gesplittet.
Code:
var string = "/profile das Haus";
var list = string.split(/ /);
Das Ergebnis sollte dann wie folgt aussehen
Code:
Array = (
 0 => /profile
 1 => das
 2 => Haus
);
Der von dir angegebene Codeschnipsel
Code:
list.length>1?list[1]:""
würde also nix weiter machen als das Array "list" auf seine Länge zu überprüfen und entscheiden, ob das Element mit dem Index 1 (also "das") übergeben wird oder ein leerer String.
Du siehst also das dein Problem nicht bei der Ersetzung über den regulären Ausdruck ist sonder schon viel eher im Code passiert.
Berichtige mich bitte wenn ich falsch liegen sollte.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben