flocky
sn0wner (analphabet)
|
ich hab eine seite auf welcher der content dynamisch erstellt wird. es werden einzelne entries formatiert ausgegeben, jeder entry mit zugehöriger statistik wird in einem eigenen table ausgegeben. die statistik befindet sich jeweils in einem eigenen <td> und dieses möchte ich per JS ausblenden, das geht mal folgendermaßen: <script language="javascript">
function toggle(name)
{
visibility = (name.style.display == 'none') ? '' : 'none';
name.style.display = visibility;
}
</script>
wobei 'name' als id=name im <td> festgelegt ist. soweit so gut, jetz hab ich halt an haufen <td>s den ich ausblenden will und wenn ich jedem die selbe id geb dann geht schon mal gar nix. jetz create ich halt über php fortlaufende ids (stats0, stats1, stats2,...) und hab mir gedacht ich verarbeite das ganze mit einer for-schleife ($num_rows ist die anzahl der einträge) => <script language="javascript">
function toggle(name)
{
for(i=0;i<={$num_rows};i++)
{
var visi = stats + i;
visibility = (visi.style.display == 'none') ? '' : 'none';
visi.style.display = visibility;
}
}
</script>
die zeile var visi = stats + i; macht aber probleme, der syntax müsste eigentlich passen aber es geht trotzdem was ned und wenn ich 'stats' + i; dann passt zwar der inhalt der variable, is aber für den zugriff auf das element anscheinend unbrauchbar. lange rede kurzer sinn, was passt da bei JS ned? ich hab nur ausführlich erklärt was ich machen möchte falls jemand vielleicht noch andere lösungsansätze hat. tia
Bearbeitet von flocky am 07.09.2005, 21:56
|
that
ModeratorHoffnungsloser Optimist
|
du willst das:
var id = 'stats' + i document.getElementById(id).style....
|
flocky
sn0wner (analphabet)
|
ich hab jetz <script language=\"javascript\">
function togglevis()
{
for(i=0;i<={$num_rows};i++)
{
var visi = 'stats' + i;
visibility = (document.getElementByID('visi').style.display == 'none') ? '' : 'none';
document.getElementByID('visi').style.display = visibility;
}
}
</script>
geht leider immer noch ned. anscheinend dürft ab der 7. zeile ein fehler sein weil er da zum interpreten aufhört. btw: habs bei getElementByID('visi') mit/ohne anführungszeichen und jeweils mit runden und eckigen klammern probiert.
|
cduke
Big d00d
|
Du willst doch nicht das Element mit der id "visi" bekommen, sondern das mit der id, die in der variable "visi" gespeichert ist. Der Aufruf muss also
document.getElementByID(visi)
lauten.
greetz cduke
|
watchout
Legendundead
|
ahm... ich hab kein Schimmer was du da anstellen willst mit der ?: abfrage... wenns "none" is, machst du ein "" daraus und sonst ein "none" ? Das is sehr konfus in meinen Augen. Willst du die Anzeige jetzt "Togglen" (deine Funktion heisst zumindest so) oder wirklich nur alles ausblenden?
ein anderer Punkt, es heisst "getElementById" und NICHT "getElementByID" javascript is case-sensitive, und deswegen kann das nicht gehen.
du definierst innerhalb der Schleife jedes Mal die Variable "visi" neu das macht man nicht.
Bearbeitet von watchout am 07.09.2005, 14:20
|
flocky
sn0wner (analphabet)
|
² duke hab ich ja auch probiert, geht ja nicht. ahm... ich hab kein Schimmer was du da anstellen willst mit der ?: abfrage... wenns "none" is, machst du ein "" daraus und sonst ein "none" ? Das is sehr konfus in meinen Augen. Willst du die Anzeige jetzt "Togglen" (deine Funktion heisst zumindest so) oder wirklich nur alles ausblenden?
ein anderer Punkt, es heisst "getElementById" und NICHT "getElementByID" javascript is case-sensitive, und deswegen kann das nicht gehen.
du definierst innerhalb der Schleife jedes Mal die Variable "visi" neu das macht man nicht. prinzipiell funktionierts mit den werten ja so, wenns auf "" steht dann ist es sichtbar bzw. wird vom browser mit dem defaultwert interpretiert, wenns auf "none" is ises nicht sichtbar. der crap funzt jetz endlich => <script language=\"javascript\">
var visi = 0;
function togglevis()
{
for(i=0;i<={$num_rows};i++)
{
visi = 'stats' + i;
visibility = (document.getElementById(visi).style.display == 'none') ? '' : 'none';
document.getElementById(visi).style.display = visibility;
}
}
</script>
|
that
ModeratorHoffnungsloser Optimist
|
du definierst innerhalb der Schleife jedes Mal die Variable "visi" neu das macht man nicht. doch, das macht man, wenn man die Variable nur innerhalb braucht.
|
watchout
Legendundead
|
doch, das macht man, wenn man die Variable nur innerhalb braucht. Ahm, für eine solche Schleife machst du lieber allocate, set, free, allocate, set, free.... , free statt allocate, set, set, ...., free ? Noch dazu definieren soweit ich bis jetzt bemerkt habe nur function-blocks einen eigenen "variable-scope"... ok vielleicht hab ich das jetzt auch mit php verwechselt - obige performance-darstellung trifft trotzdem zu. Wäre es nicht sicher dass der Variable immer ein Wert zugewiesen würde, dann is ok wenn ich jedes Mal eine neue lokale Variable definiere. Ok, das dazu. Und jetzt... das hab ich eigentlich alles nicht gemeint Ich meinte eigentlich dass man das auch gleich an den 2 stellen (von denen man eigentlich eh nur eine braucht...) das "visi"+i gleich direkt in den function-call hätte reinschreiben können. Zumindest denke ich dass ich das gmeint habe, weil das mir jetzt so auffällt... argl ich pfeiff auf JS ich geh wieder zu meinem sicken LUA
|
that
ModeratorHoffnungsloser Optimist
|
Ahm, für eine solche Schleife machst du lieber allocate, set, free, allocate, set, free.... , free
statt allocate, set, set, ...., free ? Nein, ich deklariere Variablen einfach dort wo sie gebraucht werden. Wovon sprichst du überhaupt? Performance? Ist in diesem Fall wohl vernachlässigbar, außerdem sind beide Varianten gleich schnell. Ich meinte eigentlich dass man das auch gleich an den 2 stellen (von denen man eigentlich eh nur eine braucht...) das "visi"+i gleich direkt in den function-call hätte reinschreiben können. Mit Variable ists aber schöner, weil damit das Zusammensetzen des Namens an einer Stelle konzentriert ist.
|
flocky
sn0wner (analphabet)
|
Ich meinte eigentlich dass man das auch gleich an den 2 stellen (von denen man eigentlich eh nur eine braucht...) das "visi"+i gleich direkt in den function-call hätte reinschreiben können. Zumindest denke ich dass ich das gmeint habe, weil das mir jetzt so auffällt... argl ich pfeiff auf JS ich geh wieder zu meinem sicken LUA wie hätt ich das in den function call reinschreiben sollen bzw. was hätts für einen sinn gehabt? wär im code halt bissi weiter oben gstanden... und ja, sonst find ich JS ja auch grausig, ich finds nur praktisch dass es instant ohne reload (client script halt) funzt und dass man recht einfach auf die ganzen html-elemente zugreifen kann.
|