Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Array.splice() funktioniert nicht

Mitglied: Shardas

Shardas (Level 1) - Jetzt verbinden

23.04.2014 um 12:34 Uhr, 1658 Aufrufe, 6 Kommentare, 2 Danke

Liebe Javascript-Könner,

mit array.splice lassen sich Elemente komplett aus Arrays entfernen. Leider will das bei mir nicht wirklich:

content[0] = object {name=test, value="testvalue"}
content[1] = object {name=test2, value="testvalue2"}
content[2] = object {name=test3, value=""}
usw.

Es gibt nun Objekte, dessen Value ein leerstring ist. Diese kann ich anhand

$.each(content, function(i, v) {
if (v.value === "") {
console.log(v);
}
});

identifizieren. console.log(v) zeigt mir genau die Objekte mit leeren Value String. Diese müssen nun dem Array entnommen werden.
Tausche ich console.log durch content.splice(i,1) aus erhalte ich im Log die Meldung:

TypeError: v is undefined
if (v.value === "") {

a20bd20b338ccfc71d252179a3b17d82 - Klicke auf das Bild, um es zu vergrößern

Ich bin in JS noch zu unerfahren um mit diesem Fehler umzugehen.
Hat jemand Lösungsansätze für mich?

Vielen Dank
Mitglied: colinardo
23.04.2014, aktualisiert um 18:39 Uhr
Hallo Shardas,
deine Objektdeklaration stimmt nicht so ganz, so sollte es funktionieren:
01.
var content = new Array(); 
02.
content[0] = new Object({name:"test", value:"testvalue"}); 
03.
content[1] = new Object({name:"test2", value:"testvalue2"}); 
04.
content[2] = new Object({name:"test3", value:""});
http://www.w3schools.com/js/js_objects.asp

Grüße Uwe
Bitte warten ..
Mitglied: Shardas
23.04.2014, aktualisiert um 13:58 Uhr
Hallo Uwe und danke für deine Hilfe,

ich muss etwas weiter ausholen. Das Array kommt nicht von mir, sondern von der funktion serializeArray(). Hintergrund ist ein Formular welches per serializeArray() in ein Array verwandelt wird:

var content = $("#Formular").serializeArray();

daher ist die Objektdeklaration korrekt.
Beispiel content[0] ist das erste Formularfeld welches hier für die Anrede zuständig ist:
console.log(content[0]) beinhaltet Object { name="salutation", value="Herr"}

Ziel: befindet sich in einem Objekt des Arrays eine Leerstring als value, muss dieses Objekt aus dem Array entfernt werden, damit es später nicht submitted wird.

VG
Bitte warten ..
Mitglied: colinardo
23.04.2014, aktualisiert um 18:40 Uhr
Ah OK, dann hast du sehr wahrscheinlich Felder oder Formularelemente in deinem Formular bei dem das Attribut value fehlt und deshalb eine Exception ausgeworfen wird. Also entweder filterst du deine Elemente welche du mit Serialize in das Array beförderst und bei denen du weißt das ein value-Attribut vorhanden ist
var content = $('#testform input').serializeArray();
oder du prüfst zusätzlich ob die Value-Eigenschaft überhaupt vorhanden ist.

Grüße Uwe
Bitte warten ..
Mitglied: Shardas
23.04.2014 um 16:48 Uhr
Mensch, so leicht kanns sein. Einfach mit der IF-Abfrage "undefined" vorher abfangen
Das klappt recht gut.

Allerdings:
In dem Formular gibt es drei Passwort Felder (aktuelles, neues, und neues bestätigen). Interessanter weiße wird das zweite Feld nicht rausgefiltert, obwohl Value auch ein leerstring ist. Feld 1 und 3 werden entfernt. Dieses Feld unterscheidet sich bis auf den Namen in keinster weise zu den anderen Feldern.

01.
<input type="password" name="actualPassw"> //wird entfernt wenn ohne Inhalt 
02.
<input type="password" name="newPassw"> //wird nicht entfernt 
03.
<input type="password" name="newPasswConf"> //wird entfernt
Das ist doch nicht logisch?
Bitte warten ..
Mitglied: colinardo
LÖSUNG 23.04.2014, aktualisiert 24.04.2014
Zitat von Shardas:
Das ist doch nicht logisch?
Doch, mir fällt gerade auf, in dem Script ist ein Designfehler! Denn es entfernt in der Schleife Elemente via Index, jedoch passt der Index nach dem Entfernen eines Elementes nicht mehr zum korrekten Element im content-Array, da dies dann schon ein Element kleiner ist.

Das kannst du so lösen, indem du einfach aus den Elementen die Inhalt haben ein neues Array baust:
01.
var content = $('#testform').serializeArray(); 
02.
var newcontent = new Array(); 
03.
$.each(content,function(i,v){ 
04.
	if (v.value !== undefined && v.value !== ""){ 
05.
		newcontent.push(v); 
06.
07.
}); 
08.
console.log(newcontent);
Bitte warten ..
Mitglied: Shardas
23.04.2014 um 20:24 Uhr
Mensch, Wahnsinn
Darauf bin ich nicht gekommen. Bei PHP wird der Index nicht neu geschrieben wenn ein Element entfernt wird.

Danke, das war die Lösung!
Bitte warten ..
Ähnliche Inhalte
Sicherheits-Tools
Sandox - wie funktioniert das?
Frage von Maxxx01Sicherheits-Tools8 Kommentare

Hallo, kann mir jemand bzgl. einer Sandbox (Sandboxie) erklären wie das funktioniert? a) Kann ein am (Windows) PC bereits ...

Verschlüsselung & Zertifikate

Wie funktioniert eine Vollverschlüsselung?

gelöst Frage von JohnMcClaneVerschlüsselung & Zertifikate6 Kommentare

Hallo zusammen, ich würde gerne verstehen wie eine Vollverschlüsselung z.B. mit TrueCrypt oder Bitlocker eigentlich funktioniert. Was ich nicht ...

Microsoft Office

Webabfrage funktioniert nicht

Frage von Druide83Microsoft Office4 Kommentare

Hallo Comunity, ich habe gerade ein Problem. Ausgangssituation: Ich muss jede Woche Montag manuell auf unseren Aerohive und eine ...

Server

Domainweiterleitung funktioniert nicht

Frage von TestTyp12Server2 Kommentare

Hallo zusammen, ich habe eine Fritzbox mit einem IPv6 und DSLite Anschluss Zuhause. Ich habe mir außerdem einen Server ...

Neue Wissensbeiträge
Humor (lol)
IoT-Gefahr: Smartes Aquarium leckt!
Information von Lochkartenstanzer vor 21 StundenHumor (lol)3 Kommentare

Moin, Die IoT-Manie hat weitere Opfer gefunden. Ein Casino-Leck durch ein smartes Aquarium: Allerdings haben sie kein Wasser, sondern ...

Router & Routing

Alte Fritzbox 7270 mit VPN und SIP-Telefonie hinter O2 Homebox 6641 als "Modem"

Erfahrungsbericht von the-buccaneer vor 1 TagRouter & Routing3 Kommentare

Nun war es soweit: Auch O2 hat mich mit VOIP zwangsbeglückt. Heute am Privatanschluss, in 2 Wochen ist das ...

Sicherheit

Ungepatchte Remote Code Execution-Lücke in LG NAS

Information von kgborn vor 1 TagSicherheit

Nutzt wer LG NAS-Einheiten? In den NAS-Einheiten der LG Network Storage-Einheiten gibt es eine sehr unschöne Schwachstelle, die einen ...

Windows Update

Neue Version KB4099950 NIC Einstellungen gehen verloren

Information von sabines vor 2 TagenWindows Update2 Kommentare

Es ist eine neue Version des KB4099950 verfügbar, die das Problem mit den verlorenen Netzwerkeinstellungen lösen soll. Das Datum ...

Heiß diskutierte Inhalte
Sicherheit
Verbindliche Zustellung per E-Mail?
Frage von ahussainSicherheit18 Kommentare

Hallo allerseits, ein Kunde von mir nutzt intensiv Fax. Hauptgrund: zusammen mit einer Empfangsbestätigung ist eine verbindliche Zustellung gewährleistet. ...

Sonstige Systeme
Wie Normenkataloge im Unternehmen bereit stellen?
Frage von MuzzepuckelSonstige Systeme14 Kommentare

Hallo Kollegen, ich lese schon lange hier mit, nun mein ersrer Beitrag, bzw. Frage. :-) Wir benötigen für unsere ...

Linux Netzwerk
Raspberry Pi 3: WLAN Power save deaktivieren
Frage von nordie92Linux Netzwerk13 Kommentare

Moin moin, mein Raspberry Pi 3 Model B benötigt eine dauerhaft aktive WLAN-Verbindung. Leider bricht die WLAN-Verbindung nach einigen ...

SAN, NAS, DAS
Entscheidung SAN Dell oder HP
Frage von VincorSAN, NAS, DAS13 Kommentare

Hallo, wir wollen uns für unsere Hyper V Umgebung eine neue SAN Anschaffen. Es laufen 30 VM's darunter, DC; ...