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

[ERLEDIGT] Fehler im Script bei der Ausgabe von 'alert(...)' innerhalb einer Funktion

Karsten_

Neues Mitglied
Hallo,

die folgende Funktion sucht in den Rezeptnamen eines DIV-Bereiches nach einem zuvor eingegebenen Suchbegriff. Bei Übereinstimmung werden der Rezeptname und die Befehlszeile in separate Arrays geschrieben.
Das Funktioniert auch soweit ganz gut, bis auf die Tatsache, dass die letzten beiden alerts (rot markiert) nicht ausgeführt werden.

Die Variablen und Arrays können doch nicht nach verlassen der If – Schleife verschwunden sein. Die Funktion ist hier doch noch nicht zu Ende.

Irgend etwas scheine ich übersehen zu haben.


Hat jemand eine Idee? :roll:



function Rezepte_suchen(suchbegriff) {
var anzahl_verweise;
var i, gefunden , tagName, tagObj, befehlszeile;

anzahl_verweise = document.getElementById('divRezeptsuche').getElementsByTagName('a').length;

var rezeptname = new Array(anzahl_verweise);
var rezeptlink = new Array(anzahl_verweise);

// Zähler für die Anzahl gefundener und nicht gefundener Suchbegriffe in den Rezeptnamen
gefunden = 0;
nicht_gefunden = 0;

for (i = 7849; i <=(anzahl_verweise); ++i) {
// Ausgabe Rezeptname, wie er auf dem Bildschirm angezeigt wird (innerHTML)
tagObj=document.getElementById('divRezeptsuche').getElementsByTagName("a").item(i).innerHTML;

// Auslesen der kompletten Befehlszeile (outerHTML)
befehlszeile = document.getElementById('divRezeptsuche').getElementsByTagName("a").item(i).outerHTML;

// Das tagObj und der Suchbegriff werden in Kleinbuschstaben umgewandelt
tagObj = (tagObj.toLowerCase());
suchbegriff = (suchbegriff.toLowerCase());

if (tagObj.match(suchbegriff)) {
gefunden = gefunden + 1;
rezeptname[gefunden] = tagObj;
rezeptlink[gefunden] = befehlszeile;
alert(" Rezeptname = " + rezeptname[gefunden]);
alert(" Rezeptlink = " + rezeptlink[gefunden]);
}
else {
nicht_gefunden = nicht_gefunden + 1;
}
alert(gefunden + " mal gefunden " + suchbegriff);
alert(nicht_gefunden + " mal nicht gefunden " + suchbegriff);
}
alert("Der Suchbegriff " + suchbegriff + " wurde in " + gefunden + " von " + anzahl_verweise + " Rezepten gefunden");
alert("Der Suchbegriff " + suchbegriff + " wurde in " + nicht_gefunden + " von " + anzahl_verweise + " Rezepten nicht gefunden");
}

 
hallö hier,

und was sagt firebug?
bau doch log rein für die Konsole zum prüfen und Code tags wurden nicht ohne Grund in guten erfunden :-)
so können wir den Code besser lesen.

cheffchen
 
Hast du denn tatsächlich einen Container mit der ID divRezeptsuche (#divRezeptsuche), indem sich mehr als 7849 Hyperlinks befinden?
 
Das Script läuft bislang nur im IE. Liegt an den .CSS - Einträgen, die der FF nicht versteht.

Welche CSS-Attribute sollten das sein?

Wie Cheffchen schon erwähnte: Falls dein Script keinen Fehler wirft, schreibe für alle verwendeten Variablen, Schleifen und Kontrollstrukturen ein console.log() in die Funktion. Damit kannst du herausfinden, an welcher Stelle das Script aussteigt.
 
!!! Gelöst !!! !!! Gelöst !!! !!! Gelöst !!! !!! Gelöst !!!

Besten Dank für eure Hinweise. Habe es aber auch ohne dieses Tool hinbekommen.

Der Fehler liegt in den folgenden beiden Einträgen:

tagObj=document.getElementById('divRezeptsuche').getElementsByTagName("a").item(i).innerHTML;
befehlszeile = document.getElementById('divRezeptsuche').getEleme ntsByTagName("a").item(i).outerHTML;

In beiden Zeilen müssen die Parameter getElementById('divRezeptsuche'). entfernt werden.

Dieses Script funktioniert nun. Habe es noch ein wenig angepasst. die Variable tagObj habe ich umbenannt in rezeptname
function Rezepte_suchen(suchbegriff) {
var anzahl_verweise;
var i, gefunden , tagName, rezeptname, befehlszeile;

anzahl_verweise = document.getElementById('divRezeptsuche').getElementsByTagName('a').length; //alert(" Anzahl Verweise = " + anzahl_verweise);

var rezeptname = new Array(anzahl_verweise);
var rezeptlink = new Array(anzahl_verweise);

// Zähler für die Anzahl gefundener und nicht gefundener Suchbegriffe in den Rezaptnamen
gefunden = 0;
nicht_gefunden = 0;

for (i = 1; i <=(anzahl_verweise); ++i)
{
// Ausgabe Rezeptname, wie er auf dem Bildschirm angezeigt wird (innerHTML)
tagObj= rezeptname=document.getElementsByTagName("a").item(i).innerHTML; //alert("Rezeptname = " + rezeptname);

// Auslesen der kompletten Befehlszeile (outerHTML)
befehlszeile = document.getElementsByTagName("a").item(i).outerHTML; //alert("Befehlszeile = " + befehlszeile);

// Die Inhalte von 'rezeptname' und 'suchbegriff' werden in Kleinbuschstaben umgewandelt
rezeptname = (rezeptname.toLowerCase()); //alert("Rezeptname = " + rezeptname);
suchbegriff = (suchbegriff.toLowerCase()); //alert("Suchbegriff = " + suchbegriff)

if (rezeptname.match(suchbegriff))
{
gefunden = gefunden + 1;
rezeptname[gefunden] = rezeptname; //alert(" Rezeptname = " + rezeptname[gefunden]);
rezeptlink[gefunden] = befehlszeile; //alert(" Rezeptlink = " + rezeptlink[gefunden]);
}
else
{
nicht_gefunden = nicht_gefunden + 1;
}
}
//alert("Der Suchbegriff " + suchbegriff + " wurde in " + gefunden + " von " + anzahl_verweise + " Rezepten gefunden");
//alert("Der Suchbegriff " + suchbegriff + " wurde in " + nicht_gefunden + " von " + anzahl_verweise + " Rezepten nicht gefunden");
alert("Ende");
}
// ------------------------------- Ende: Rezeptnamen suchen --------------------------------
 
Zurück
Oben