IndexOf oder was???
Kai Schwarz
- javascript
0 Robert Bamler0 Kai Schwarz0 Robert Bamler0 Bio
Hallo!
folgendes Problem:
ich habe eine Variable adfname, die mir den Suchbegriff liefert mit dem ich Schritt für Schritt ein Array durchsuche:
for ( var i = 0; i < liste.length; i++ )
{
if ( liste[i].indexOf( adfname ) != -1 )
{
document.write(liste[i]);
}
}
nur liefert mir das ganze nichts zurück, obwohl die Variable adfname nicht leer ist >>und<< das array liste 100%ig den Inhalt der Variablen adfname enthält!
übergebe ich statt der Variablen direkt den Inhalt, so gehts :-)
:
:
if ( liste[i].indexOf("AdF)IceW") != -1 )
:
:
Daher gehe ich von aus, dass indexOf keine Variablennamen verarbeiten kann. Also wie übergebe ich den Inhalt von adfname an indexOf??? oder wie ist es möglich ein array nach dem Inhalt einer Variablen zu durchsuchen???
MfG, Kai
& Thx 4 help!
Hallo,
ich habe eine Variable adfname, die mir den Suchbegriff liefert mit dem ich Schritt für Schritt ein Array durchsuche:
for ( var i = 0; i < liste.length; i++ )
{
if ( liste[i].indexOf( adfname ) != -1 )
{
document.write(liste[i]);
}
}
nur liefert mir das ganze nichts zurück, obwohl die Variable adfname nicht leer ist >>und<< das array liste 100%ig den Inhalt der Variablen adfname enthält!
Hab's mal nachgebaut, weil ich das einfach nicht glauben konnte ;-)
<html>
<head>
</head>
<body>
<script language="JavaScript">
<!--
liste = new Array("abc","def","ghiAdF)IceWjkl","mnop");
adfname = "AdF)IceW";
for ( var i = 0; i < liste.length; i++ )
{
if ( liste[i].indexOf( adfname ) != -1 )
{
document.write(liste[i]);
}
}
//-->
</script>
</body>
</html>
Funktioniert bei mir einwandfrei unter IE6 und NC4.
Liefert (wie erwartet) folgende Ausgabe: ghiAdF)IceWjkl
[...]
Daher gehe ich von aus, dass indexOf keine Variablennamen verarbeiten kann.
Das kann eigentlich nicht sein. Ein Variablenname als Parameter einer Funktion bewirkt, dass der Wert der Variablen in der Funktion verwendet wird. Eher ist es umgekehrt möglich: in manchen Programmiersprachen gibt es Funktionen, die Variablenparameter *brauchen*. Aber dass Konstantenparameter benötigt werden, habe ich noch nie gesehen.
Poste mal den Quelltext der Seite, der Fehler muss irgendwo anders liegen.
Robert
http://www.designauswahl.here.de
mit kostenlosem Webseiten-Generator ROBE.dit
[more than a HTMLE.dit]
<html> <head> <meta http-equiv="content-type" content="text/html;charset=iso-8859-1"> <meta name="generator" content="Adobe GoLive 5"> <title>Members Details</title>
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Hier stehen die Einträge, die in ein Array gelesen werden: Sieht so aus in der Datei:
liste = new Array; liste.push("AdF)H4ll0w33n|Kai|yy.yy.yyyy|ICQ|bla.bla@web.de|Rat"); liste.push("AdF)Dr.Nuke|Michael|xx.xx.xxxx|ICQ|bla@bla.de|Rat"); <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
<script src="memberliste.js" type="text/javascript"></script> <script type="text/javascript"> <!-- function Ausgabe() { var re = /[?|&]acc=([^&]*)/; re.exec(self.location.href); document.write(RegExp.$1); var adfname = RegExp.$1; return(adfname); }
//--> </script> </head>
<body bgcolor="black"> <table cool width="862" height="562" usegridx usegridy showgridx showgridy gridx="16" gridy="16" border="0" cellpadding="0" cellspacing="0"> <tr height="96"> <td width="128" height="561" rowspan="2"></td> <td width="733" height="96"></td> <td width="1" height="96"><spacer type="block" width="1" height="96"></td> </tr> <tr height="465"> <td width="733" height="465" valign="top" align="left" xpos="128"> <table border="5" background="images/023.jpg" style="background-repeat:no-repeat; background-position:center; background-attachment:fixed" cellspacing="1" cellpadding="0" width="570" bgcolor="black"> <tr> <td bgcolor="1F1F1F" height="16" align="center"><font color="white"><b> <script>Ausgabe();</script> </b></font></td> </tr> <tr> <td valign="top"> <table width="570" cellspacing="0" cellpadding="0" border="0"> <tr> <td valign="top" height="20"></td> <td valign="top"></td> </tr> <tr> <td colspan="2" bgcolor="#1F1F1F" height="1"><spacer type="block" height="1" width="1"></td> </tr> <tr> <td valign="top"><font color=white><b>Name:</b></font></td> <td><font color=white> <script> for ( var i = 0; i < liste.length; i++ ) { if ( liste[i].indexOf( adfname ) != -1 ) { aaa(liste[i]); } } </script> </font></td> <td valign="top"><span datafld="NAME"></span></td> </tr> <tr> <td colspan="2" bgcolor="#1F1F1F" height="1"><spacer type="block" height="1" width="1"></td> </tr> <tr> <td valign="top"><font color=white><b>geb.:</b></font></td> <td valign="top"><span datafld="GEB"></span></td> </tr> <tr> <td colspan="2" bgcolor="#1F1F1F" height="1"><spacer type="block" height="1" width="1"></td> </tr> <tr> <td valign="top"><font color=white><b>ICQ:</b></font></td> <td valign="top"><span datafld="ICQ"></span></td> </tr> <tr> <td colspan="2" bgcolor="#1F1F1F" height="1"><spacer type="block" height="1" width="1"></td> </tr> <tr height="20"> <td valign="top"><font color=white><b>Mail:</b></font></td> <td valign="top"><span datafld="MAIL"></span></td> </tr> <tr> <td colspan="2" bgcolor="#1F1F1F" height="1"><spacer type="block" height="1" width="1"></td> </tr> <tr> <td valign="top"><font color=white><b>Funktion:</b></font></td> <td valign="top"><span datafld="FUNKTION"></span></td> </tr> <tr> <td colspan="2" bgcolor="#1F1F1F" height="1"><spacer type="block" height="1" width="1"></td> </tr> <tr height="20"> <td align="center" height="20"></td> <td height="20"></td> </tr> <tr> <td colspan="2" bgcolor="#1F1F1F" height="1"><spacer type="block" height="1" width="1"></td> </tr> <tr> <td align="center"></td> <td height="20"></td> </tr> <tr> <td colspan="2" bgcolor="#1F1F1F" height="1"><spacer type="block" height="1" width="1"></td> </tr> <tr> <td align="center"></td> <td height="20"></td> </tr> <tr> <td colspan="2" bgcolor="#1F1F1F" height="1"><spacer type="block" height="1" width="1"></td> </tr> <tr> <td align="center"></td> <td height="20"></td> </tr> <tr> <td colspan="2" bgcolor="#1F1F1F" height="1"><spacer type="block" height="1" width="1"></td> </tr> <tr> <td align="center"></td> <td height="20"></td> </tr> <tr> <td colspan="2" bgcolor="#1F1F1F" height="1"><spacer type="block" height="1" width="1"></td> </tr> <tr height="19"> <td align="center" height="19"></td> <td height="19"></td> </tr> <tr> <td colspan="2" bgcolor="#1F1F1F" height="1"><spacer type="block" height="1" width="1"></td> </tr> </table> </td> </tr> </table> </td> <td width="1" height="465"><spacer type="block" width="1" height="465"></td> </tr> <tr height="1" cntrlrow> <td width="128" height="1"><spacer type="block" width="128" height="1"></td> <td width="733" height="1"><spacer type="block" width="733" height="1"></td> <td width="1" height="1"></td> </tr> </table> </body> </html>
Hallo,
var adfname = RegExp.$1;
^^^
Die Variable "adfname" ist lokal, da sie mit vorangestelltem "var" definiert wurde. Lass das var weg, dann funzt's.
siehe: </selfhtml/javascript/sprache/variablen.htm#definieren>
[...]
for ( var i = 0; i < liste.length; i++ )
{
if ( liste[i].indexOf( adfname ) != -1 )
Wenn du vor die if-Abfrage zum Test ein "alert(adfname);" eingefügt hättest, wärst du übrigens wahrscheinlich auch darauf gekommen. So teste ich meine Skripts immer.
Robert
http://www.designauswahl.here.de
mit kostenlosem Webseiten-Generator ROBE.dit
[more than a HTMLE.dit]
Sup!
Die Variable adfname wird bei Dir gar nicht belegt, denn es ist eine private Variable, die nur innerhalb der Funktion gültig ist. Da kannst Du returnen, was Du willst - da Du den Rueckgabewert nicht mal benutzt, erfaehrt das JS ausserhalb der Funktion gar nichts davon, was adfname innerhalb der Funktion bedeutet.
Das var adfname muss ausserhalb der Funktion im <script> Block stehen!
Innerhalb darf adfname dann nicht nochmal definiert werden, sonst gibt's das gleich Problem, denn dann hält JS das adfname innerhalb der Funktion fuer eine ganz andere Variable, die nur zufaellig auch so heisst. Also: Das var adfname vor die Funktion in den obersten Skriptbereich im Head packen, dann wird's eine globale Variable - hoffentlich ;-)
Gruesse,
Bio