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

Frage Entwicklung JavaScript

GELÖST

Array.splice() funktioniert nicht

Mitglied: Shardas

Shardas (Level 1) - Jetzt verbinden

23.04.2014 um 12:34 Uhr, 1641 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
Datenschutz

Teamviewer kommt für IoT-Geräte wie den Raspberry Pi

Information von magicteddy vor 3 StundenDatenschutz

Moin, jetzt werden IoT Geräte endgültig zur Wanze? Anscheinend kann man auf einem Dashboard seine Geräte visualisieren Ich stelle ...

Microsoft

Letzte Updates für Win10 und Server2016 müssen bei Bedarf über den Update catalogue in den WSUS importiert werden!

Tipp von DerWoWusste vor 7 StundenMicrosoft1 Kommentar

automatisch kommt da nichts an im WSUS und auch nicht im SCCM. Siehe Hinweise zum Bezug der jeweils neuesten ...

Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 3 TagenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 3 TagenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Preis für Wartungsvertrag ok?
gelöst Frage von a-za-zNetzwerkmanagement21 Kommentare

Hallo! Mal ne Frage, weil ich mich mit dem akzeptablen Preis für einen Reaktionszeitvertrag nicht auskenne. Meine Firma hat ...

Windows Netzwerk
Ist ein Portforwarding auf einen PC ohne lauschendes Programm ein (großes) Sicherheitsproblem?
Frage von PluwimWindows Netzwerk13 Kommentare

Hallo zusammen, zur Fernwartung eines Rechners an einem anderen Ort nutze ich VNC. Da dieser Rechner einfach nur eine ...

SAN, NAS, DAS
Wer kennt sich mit QNAP und CISCO aus ?
gelöst Frage von MachelloSAN, NAS, DAS10 Kommentare

Hallo Zusammen hier im Forum, Ich habe ein QNas 451+ und dieses NAS hat zwei GBit Lan Adapter die ...

Windows Server
Terminal Server 2016 erkennt Berechtigungen nicht
gelöst Frage von Thomas2Windows Server10 Kommentare

Hallo Administratoren, folgendes Problem stellt sich dar: Es gibt zwei Windows Server 2016, die als Terminal Server fungieren. Jetzt ...