2009-08-12 6 views
0

Sie müssen nicht mit Spry-Syntax vertraut sein, aber ich verwende SPRY (AJAX-Widget) und versuche, eine Funktion zu schreiben, um mehrere Bedingungen zu behandeln.Generieren von Listen: JavaScript-Funktion mit mehreren Bedingungen

spry:when="{ds_CurrentRowNumber} == {ds_RowNumber} && {ds_RowNumber} < 4" 

Ich mag diese in eine Funktion aktivieren, die alle 4 li-Tags wie einen neuen ul-Tag in der gleichen div erzeugt:

<ul spry:repeatchildren="ds1"> 
    <li spry:if="{ds_RowID} < 4 ">{item}</li> 
</ul> 

<ul spry:repeatchildren="ds1"> 
    <li spry:if="{ds_RowID} > 4 && {ds_RowID} < 9 ">{item}</li> 
</ul> 

Was würde diese Funktion Look mögen? Jede Hilfe wird sehr geschätzt.

Antwort

0

Dies geschieht normalerweise mit dem Modulus-Operator (das Prozentzeichen -% - in Javascript).

Modulus gibt den "Rest nach Division" zurück, der Ihnen genau sagen kann, wann Sie eine neue "Zeile" getroffen haben.

Also (Spry überhaupt nicht zu kennen) etwas wie das: {ds_RowID}% 4 = 0 sollte Ihnen sagen, wenn Sie in einer neuen Zeile sind - zum Beispiel der Modul von Zeile 4 gibt 4% 4 von Null (4 in 4 geteilt hat einen Rest von Null). Der Modul von 5% 4 wäre "1" und so weiter.

Also, im Grunde, wenn der Modulo Null ist, würden Sie Ihre spezielle Verarbeitung (Beenden der vorherigen Liste - falls eine existiert) und Starten eines neuen.

Einige Code psuedo:

itemsPerRow = 4 Starten Sie die erste Zeile (

    ) Schleife über alle Artikel Anzeige der aktuellen Position (
  • ) wenn currentRow Modul itemsPerRow Null OR wenn currentRow ist die Last Beenden Sie die Zeile (
) wenn currentRow < totalRows - itemsPerRow Es gibt mindestens eine weitere Zeile zu gehen, starten Sie die nächste Zeile() Ende wenn Ende if End Loop

Dies muss möglicherweise ein bisschen geändert werden, wenn Ihr Index mit Null statt einer beginnt, aber ich hoffe, Sie bekommen die Idee.

Verwandte Themen