2009-06-02 7 views
0

Ich erstelle ein Webformular, das Combos enthält, die 100 Werte oder so enthalten. Die Werte sind gleich.Verwenden von document.write für feste HTML

Das Formular kann mehrere Datensätze enthalten. Wenn es also 100 Datensätze gibt, dann sind es 10.000 Zeilen, was aus Sicht des "Downloads" ziemlich falsch erscheint.

Die Sache ist: Ich möchte diese Combo dynamisch halten, um die ID aus der Datenbank zu behalten.

So kam ich zu dem Follow-up:

..... 
<script> 
     stupidCombo = "<option>a"+ 
        "<option>b"+ 
        ... 
        "<option>99zzz"+ 
        "</select>"; 
</script> 
..... form here 
.... for each item in huge list do paint <table><tr> etc. etc 

<td> 
<select name="comb-<%=id%>"> 
     <option selected><%=obj.val%> 
     <script>document.write(stupidCombo);</script> 
</td> 
... close form, table, html etc. 

ich es gemacht habe und "Look" in Ordnung. Die Seite wurde von 50k Zeilen auf 5k verkleinert und die Auswahl wird durch das Javascript auf der Client-Seite erstellt.

Meine Frage ist .....

Ist das ok?

Gibt es ein Risiko? nur auf das Dokument, um es selbst

ich ausleihen diese Idee nach zu verstehen, die den meisten des JavaScript-Frameworks arbeiten, aber die meisten von ihnen auf ein eher, dass < div> Elemente arbeiten.

Ich ziele auf IE6 und dies ist eine schnelle Lösung, die morgen früh produziert werden muss (also möchte ich nicht zu viel Zeit damit verbringen), aber ich möchte keine 50.000 Zeilen dafür geschrieben haben jede Anfrage, wenn ich es helfen kann.

Dank

Antwort

1

HTML von document.write produziert funktioniert auf die gleiche Weise wie normale, so dass es keine technischen Probleme mit Ihrer Lösung gibt. (Natürlich funktioniert eine solche Lösung nur, wenn Javascript aktiviert ist)

Übrigens, für die Listen mit einer großen Anzahl von Optionen können Sie "suggest box" component betrachten, die native selectbox ersetzen kann.

+0

Yeap, ich hatte nicht das Gefühl, ein Framework hinzuzufügen, denn ich habe nur ein paar Stunden Zeit, um diese kleine Form zu vervollständigen und ich wollte nicht noch etwas hinzufügen. – OscarRyz

1

gut funktioniert es natürlich nicht, wenn Javascript deaktiviert ist.

0

Google macht es ("document.write") die ganze Zeit (Analytics/Adsense/...), also sehe ich nicht, warum da irgendwas nicht stimmt.

Ihre Lösung sieht ein bisschen seltsam aus, weil das <script>-Tag in einem <select>-Tag ist, also sollten Sie besser in mehreren Browsern einchecken. Schließlich wissen Sie nie, was IE tun wird :)

+0

Das ist genau das, meine Sorge: S .. .Ich brauchen IE6 gerade jetzt, da dies ein „Notfall“ fix ist (Sie wissen, ist etwas, das waren nur passiert, ich arbeite und nirgendwo sonst auf der Welt richtig?) :) – OscarRyz

3

HTTP-Komprimierung (mod_gzip, etc.) wird alles gut komprimiert.

Wenn Sie auf document.write bestehen, müssen Sie JavaScript verwenden <select> Element als auch zu schreiben, denn in HTML Sie zu <script> innerhalb <select> nicht erlaubt zu setzen.

Ein anderer Ansatz besteht darin, eine Kopie des Steuerelements an den Browser zu senden und dann mit Hilfe von selectElement.cloneNode(true) zu duplizieren.

+0

<- dies, bitte vermeiden Sie doc.write – annakata

+0

: -/... das ist was ich fürchte .. Die Sache ist, wenn ich die