Variable als HTML-Code ausgeben
tschanne
- javascript
Tag zusammen
while(z < max)
{
if(BI1[z][1] == BI)
{
document.write("<option value='" + BI1[z][0] + "'>" + BI1[z][2] + "</option>");
}
z++;
}
Dieses Script befindet sich innerhalb eines SELECT-Tags im HTML. Mit Document.write kann ich dies doch ins HTML schreiben (siehe Code). allerdings erscheinen die dann nicht in der Select-Box, sondern löschen die seite und schreibt es in eine weisse html seite!!??
Hallo,
wie sieht denn der Code drum rum aus?
sondern löschen die seite und schreibt es in eine weisse html seite!!??
Klingt für mich als stände da irgendwo noch ein unmotiviertes document.open
Grüße,
Utz
Hallo,
wie sieht denn der Code drum rum aus?
sondern löschen die seite und schreibt es in eine weisse html seite!!??
Klingt für mich als stände da irgendwo noch ein unmotiviertes document.open
Grüße,
Utz
hi
nein nirgends is document.open
hier der restliche code:
<td>
<select size="1" name="Auspragung" class="popup1" ID=Select4>
<option value="" selected></option>
<script type="text/javascript">
function anz(BI)
{
<%rsBI1.MoveFirst%>
//Variablen-Definition
//**************************************************
var max = <%=rsBI1.RecordCount%>;
var z = 0;
var tat = 0;
//Definition Gesamt-Array
var BI1 = new Array(max);
for(var i = 0; i < BI1.length; ++i)
{
BI1[i] = new Array(3);
}
//**************************************************
//Abfüllen Gesamt-Array
//**************************************************
while(z < max)
{
<%
while not rsBI1.EOF
%>
BI1[z][0] = "<%=rsBI1("MID")%>";
BI1[z][1] = "<%=rsBI1("Beschaffungsinstrument")%>";
BI1[z][2] = "<%=rsBI1("Bezeichnung")%>";
if(<%=rsBI1("Beschaffungsinstrument")%> == BI)
{
tat++;
}
z++;
<%
rsBI1.MoveNext
wend
%>
}
//**************************************************
//Anzeige
z = 0;
document.writeln("<selcet>");
while(z < max)
{
if(BI1[z][1] == BI)
{
document.writeln("<option value='" + BI1[z][0] + "'>" + BI1[z][2] + "</option>");
}
z++;
}
document.writeln("</selcet>");
}
</script>
</select>
</td>
Vom Prinzp her is das schon möglich, das man so mit document.write bei ner select box options anfügen kann oder?
Hallo,
Vom Prinzp her is das schon möglich, das man so mit document.write bei ner select box options anfügen kann oder?
Das geht vom Prinzip her - ich glaube, Du verhedderst Dich eher in der Reihenfolge von Server- und Client-seitigem Skripting. Beispiel:
while(z < max)
{
<%
while not rsBI1.EOF
%>
BI1[z][0] = "<%=rsBI1("MID")%>";
BI1[z][1] = "<%=rsBI1("Beschaffungsinstrument")%>";
BI1[z][2] = "<%=rsBI1("Bezeichnung")%>";
if(<%=rsBI1("Beschaffungsinstrument")%> == BI)
{
tat++;
}
z++;
<%
rsBI1.MoveNext
wend
%>
}
Serverseitig wird zuerst ausgeführt, also while not rsBI1.EOF ... wend zuerst, mit quasi einem response.write als Methode - im Quelltext stünde dann also etwa:
BI1[z][0] = "MID1";
BI1[z][1] = "Beschaffungsinstrument1";
BI1[z][2] = "Bezeichnung1";
if("Beschaffungsinstrument1" == BI)
{
tat++;
}
z++;
BI1[z][0] = "MID2";
BI1[z][1] = "Beschaffungsinstrument2";
BI1[z][2] = "Bezeichnung2";
if("Beschaffungsinstrument2" == BI)
{
tat++;
}
z++;
BI1[z][0] = "MID3";
BI1[z][1] = "Beschaffungsinstrument3";
BI1[z][2] = "Bezeichnung3";
if("Beschaffungsinstrument3" == BI)
{
tat++;
}
z++;
usw. usf. - darauf dann while(z < max) {...} anzuwenden ergibt nicht allzuviel Sinn.
Außerdem:
a) Wenn ich mich nicht mit den } verzählt habe, wird die definierte Funktion nie geschlossen.
b) Ich finde auch keine Stelle, wo sie je aufgerufen würde.
c) document.writeln("<selcet>"); und document.writeln("</selcet>"); funktionieren auch nicht wirklich :-)
Schau Dir mal an was Dein Browser als Quelltext ausspuckt, das hilft Dir wahrscheinlich weiter.
Grüße,
Utz
ich weis das mit dem server und clientseitigen...
aber die werte im array stimmen die hab ich überprüft
du siehst den funktionsaufruf nirgends weil ich den nich gepostet habe, wenn ich das ganze file poste wirds zu lang, das teil ist riesig. die funktion wird mit onchange bei einem anderen selectbox aufgerufen und der value wird als parameter übergeben.
die writeln("<select>") habe ich nur zum test reingetan...
Hallo,
du siehst den funktionsaufruf nirgends weil ich den nich gepostet habe, wenn ich das ganze file poste wirds zu lang, das teil ist riesig.
Kannst Du es irgendwie online stellen, um das nachvollziehen zu können? Sonst kann zumindest ich Dir ansonsten nicht mehr helfen.
Grüße,
Utz
Ok, ich schneide einfach die SQLs und das meiste ASP etc weg um platz zu sparen_: funktionsaufruf bei onchange von beschaffungsinstrument
vielen dank für deine hilfe :)
----------------------------------------
<%
'****************************************************************************************
Set rsBI1 = Server.CreateObject("ADODB.RecordSet")
SQL = "Select * From Quelle;"
rsBI1.open SQL, Conn,adOpenStatic, AdLockReadOnly
'****************************************************************************************%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<style>
BODY { font-family: Arial; font-size: 9pt}
TABLE { font-family: Arial; font-size: 9pt}
A:hover {color:"#EB0066"; font-size: bolder}
</style>
<base target="_self">
<title>Bewerber Detail</title>
<link rel="stylesheet" type="text/css" href="../CSS/BV.css">
</head>
<body bgcolor="#6699FF" link="#808080" vlink="#808080" alink="#EB0066">
<!--#include file="adovbs.inc"-->
<%response.Write(output & "<br>" & "<br>")%>
<b><font size="3">Bewerber Detail</font></b>
<form method="POST" action="B_Detail.asp?Action=Save&bid=<%=BID%>" ID=Form1>
<table border="1" cellspacing="1" style="border-collapse: collapse" bordercolor="#FFFFFF" id="AutoNumber1" width="594" bgcolor="#99CCFF">
<tr>
<td width="25%">Beschaffungsinstrument*</td>
<td width="25%"><select size="1" name="Beschaffungsinstrument" class="popup1" ID=Select3 onChange="javascript:anz(this.value)">
<%while not rs3.eof
if BBeschaffungsinstrument = rs3("IID") then
sel="SELECTED"
else
sel=""
end if%>
<option <%=sel%> value="<%=rs3("IID")%>"><%=rs3("InstrumentBezeichnung")%></Option>
<%rs3.movenext
wend
rs3.Close
%>
</select>
</td>
<td width="25%">Ausprägung*</td>
<td>
<select size="1" name="Auspragung" class="popup1" ID=Select4>
<option value="" selected></option>
<script type="text/javascript">
function anz(BI)
{
<%rsBI1.MoveFirst%>
//Variablen-Definition
//**************************************************
var max = <%=rsBI1.RecordCount%>;
var z = 0;
var tat = 0;
//Definition Gesamt-Array
var BI1 = new Array(max);
for(var i = 0; i < BI1.length; ++i)
{
BI1[i] = new Array(3);
}
//**************************************************
//Abfüllen Gesamt-Array
//**************************************************
while(z < max)
{
<%
while not rsBI1.EOF
%>
BI1[z][0] = "<%=rsBI1("MID")%>";
BI1[z][1] = "<%=rsBI1("Beschaffungsinstrument")%>";
BI1[z][2] = "<%=rsBI1("Bezeichnung")%>";
if(<%=rsBI1("Beschaffungsinstrument")%> == BI)
{
tat++;
}
z++;
<%
rsBI1.MoveNext
wend
%>
}
//**************************************************
//Anzeige
z = 0;
document.writeln("<selcet>");
while(z < max)
{
if(BI1[z][1] == BI)
{
document.writeln("<option value='" + BI1[z][0] + "'>" + BI1[z][2] + "</option>");
}
z++;
}
document.writeln("</selcet>");
}
</script>
</select>
</td>
</tr>
<tr>
<td width="25%"> </td>
<td width="25%"> </td>
<td width="25%"> </td>
<td> </td>
<td><input type="submit" value="Speichern" name="Action" class="button1" ID=Submit1/></td>
</tr>
</table>
</form>
</body>
</html>
Hallo,
und wie soll ich das jetzt testen können ohne Deine Datenbank und ohne adovbs.inc? Lass es bitte bei Dir lokal laufen, nimm die Quelltext-Anzeige aus Deinem Browser und lade das als *.htm irgendwo hoch, wenn's denn zu viel zum Posten wird.
Grüße,
Utz
Hallo,
und wie soll ich das jetzt testen können ohne Deine Datenbank und ohne adovbs.inc? Lass es bitte bei Dir lokal laufen, nimm die Quelltext-Anzeige aus Deinem Browser und lade das als *.htm irgendwo hoch, wenn's denn zu viel zum Posten wird.
Grüße,
Utz
hallo
ich hab dir ne mail gemacht an die von dir angegebene adresse mit dem anhang
Hallo,
da hätt ich aber auch gleich drauf kommen müssen, sorry: document.write geht an so ner Stelle nur beim Laden der Datei, aus nem Funktionsaufruf heraus bringt es den von Dir beschriebenen Effekt. Wenn Du aus nem Funktionsaufruf heraus nachträglich Listeneinträge hinzufügen möchtest, musst Du das über DOM (z.B. mit appendChild(), http://de.selfhtml.org/javascript/objekte/node.htm#append_child) machen oder innerHTML (http://de.selfhtml.org/javascript/objekte/all.htm#inner_html, geht auch im Mozilla und neueren Operas, dann aber mit getElementById-Referenzierung) verwenden. appendChild() scheint für Deinen Fall wie geschaffen zu sein...Du hängst einfach Kinder in das <select>-Element, fertig.
Grüße,
Utz
Hi
das child zeugs sieht ein bisschen kompliziert aus für mich.. :/
könntest du mr ein beispiel für meinen speziellen fall machen?
vielen dank für den hinweis, hätte wahrscheinlich noch weis nicht wie lange nach dem fehler gesucht....
//Anzeige
z = 0;
document.getElementById("Auspragung").removeChild(document.getElementById("Auspragung").firstChild);
var newopt = document.createElement("option");
while(z < max){
if(BI1[z][1] == BI)
{
var newoptei = document.createTextNode(BI1[z][2]);
}
document.getElementById("Auspragung").appendChild(newopt);
document.getElementsByTagName("option")[z].appendChild(newoptei);
z++;
}
}
Ich habs mal probiert...
aber es gibt einen Typkonflikt!!???
keine ahnung an wases liegt
bitte helft mir ich mag nicht mehr :( ;)
Hallo,
erstens: nimm die Funktion da weg wo sie jetzt ist und tu sie z.B. in den Head - Grund: Löschen der bisherigen Kinder von <select> würde versuchen, die Funktion selber mitzulöschen. Du brauchst sie auch nicht an der Stelle zu stehen haben.
z = 0;
// so lange die select-Liste Kinder hat
while(document.getElementById("Select4").hasChildNodes())
{
// setze das erste auf den Variablennamen "knoten"
knoten = document.getElementById("Select4").firstChild;
// und lösche es
document.getElementById("Select4").removeChild(knoten);
}
while(z < max)
{
if(BI1[z][1] == BI)
{
// kreiere ein neues option-Element
newOption = document.createElement("option");
// weise ihm das Attribut value mit Inhalt zu
newOption.setAttribute("value", BI1[z][0]);
// Text zwischen <option> und </option>
newOptionText = document.createTextNode(BI1[z][2]);
// Hänge den Text ans Option-Element
newOption.appendChild(newOptionText);
// Hänge das Option-Element in die Select-Liste
document.getElementById("Select4").appendChild(newOption);
}
z++;
}
}
Grüße,
Utz
Hallo
Oh MEIN GOTT
WAU!!!
JUHUUUUU!!!
JiPIEEEEE
Vielen Dank :)))
:D
:D
endlich funktionierts
jaaa
thx so much
greeeeez tschanne
Hallo tschanne,
Warum willst Du die Options eigentlich mit Javascript schreiben?
Einfacher wäre doch, auch die Auswahlliste schon serverseitig zu generieren:
<select size="1" name="Auspragung" class="popup1" ID=Select4>
<option value="" selected></option>
<%
rsBI1.MoveFirst
while not rsBI1.EOF
Response.Write "<option value='" + rsBI1("MID") + "'>" + rsBI1("Bezeichnung") + "</option>"
rsBI1.MoveNext
wend
%>
</select>
Grüße
Andreas
darauf wäre ich auch gekommen
aber es soll ja nicht alle in die box tun sondern nur die mit dem fremdsclüssel = BI