Script funktioniert nicht richtig

geealigy

Grünschnabel
Guten Tag,

ich versuche folgenden Vorgang zu automatisieren:

Ich habe zwei Textdokumente. In dem einen stehen zweilenweise Daten im Format "Nummer:Hash".
In der zweiten Datei stehen "Hash:Artikel". Ich möchte nun, dass ich eine Ausgabe bekomme mit "Hash:Artikel".

Es steht alles zeilenweise untereinander und ist komplett durcheinander, also die Nummer der ersten Zweile im ersten Dokument ist nicht zwangsweise die Nummer der ersten Zeile im zweiten Dokument.


Ich bin in sachen Javascript nicht wirklich bewandert, aber habe trotzdem etwas versucht. Dazu habe ich Firebug als Konsole benutzt.

Code:
document.body.innerHTML = "<textarea id='mytext' />"
//Damit nehme ich die Daten der Textdokumente auf

NummerHash=document.getElementById('mytext').value
//Das gebe ich ein, wenn in dem Fenster die Nummer:Hash Daten drin sind

HashArtikel=document.getElementById('mytext').value
//Das gebe ich ein, wenn in dem Fenster die Hash:Artikel Daten drin sind

var splitNummerHash = NummerHash.split('\n');
var splitHashArtikel = HashArtikel.split('\n');
var result =[];

function findHash(hash) {for each(var i in NummerHash) { var array = i .split(', '); if(array[2] == hash) return array; }}

for each(var i in splitHashArtikel) { var hash = i.split(':'); var array = findHash(hash[0]); result.push([array[1], hash[1]]); }

for(var i in result) { result[i] = result[i].join(':'); } 

text = result.join('\n');

document.getElementById('mytext').value = text

Bei dem Teil
Code:
for each(var i in splitHashArtikel) { var hash = i.split(':'); var array = findHash(hash[0]); result.push([array[1], hash[1]]); }


bekomme ich den Error: "TypeError: array is undefined".

1. Ich weiß leider nicht, was ich tun soll, damit es funktioniert.
2. Ist es außerdem umständlich das als html Datei mit Buttons als Script zu versehen?


Würde mich sehr über Hilfe freuen.

P.S.: Bin für andere Lösungen des Problems natürlich offen!
 
Hi,

wilkommen im Forum!

Du willst also den Inhalt der 2 Textdateien manuell im 2 textareas kopieren und dann eine Liste ausgegeben bekommen?
Soll das auf deiner Homepage stehen oder ist es nur ein einmaliger Vorgang, wenn ja, wiso dann ausgerechnet JavaScript?

Durch deinen Code steige ich leider nicht ganz durch, wenn du mir nochmal erklärst, was du genau vorhast, versuche ich gerne dein Problem zu lösen,

javaDeveloper2011
 
Noja viel sagen dazu kann ich nun auch nicht , aber dein Fehler wird wohl in der findHash Funktion zu finden sein.

array wird mit dem Rückgabewert dieser Funktion belegt , und innerhalb dieser 1 Funktion wird array erst einmal definiert.

Code:
/**
 * liefert auf jeden Fall nur dann ein Array zurück wenn NummerHash 
 * mindestens 1 Wert  besitzt, in einen anderen Fall gibt es gar nichts
 * zurück. Das ist schlecht wenn wir bedenken das mit dem Rückgabe
 * Wert eine Variable befüllt werden soll
 */
function findHash(hash) {
    for each(var i in NummerHash) { 
        var array = i .split(', '); 
        if(array[2] == hash) 
           return array; 
    }

    // damit liefert er dann wenigstens ein leeres Array zurück
    // und nicht einfach nichts
    return [];
}
 
Wenn dein Code etwas leserlicher wär, könntest du genau feststellen in welcher Zeile das Problem liegt, ergo auch feststellen was das Problem ist und genauer darauf eingehen:

Code:
for each(var i in splitHashArtikel) {
    var hash = i.split(':');
    var array = findHash(hash[0]);
    result.push([array[1], hash[1]]);
}

greez
THEJS
 

Neue Beiträge

Zurück