Om jag har en js fil som öppnar en fil för skrivning så ersätts all kod som står i den filen. Går det att öppna den och skriva dit HTML kod utan att den ersätter?
Har en frameslösning där jsfilen skriver en dynamisk meny, problemet är att jag inte kan få med ngn aspkod i den framen så en koll på om person är inloggad eller inte funkar inte.
har testat att skriva asp koden till framen men det funkar inte iom att det exekveras ju aldrig av servern.
Tacksam för svar.
Peter SMedlem sedan dec. 20025 483 inlägg Ja:
[i]objektreferens[/i].innerHTML = "[i]HTML-kod[/i]";
Exempel:
<script type="text/javascript">
function f() {
document.getElementById("div").innerHTML = "<i>Text</i>";
return false;
}
</script>
<div id="div"></div>
<a href="javascript:void(0)" onclick="return f()">Lägg till text</a>
:)
ok.. får inte riktigt till det. Objetreferens, kan det vara en frame med namn eller måste det gå via id?
har
frame.document.innerHTML = "Text"
nu uten resultat
Peter SMedlem sedan dec. 20025 483 inlägg Självklart kan du gå via ramar. Enklast använder du ett id och document.getElementById(), men det finns även andra lösningar.
var elm = document.createElement("i");
elm.innerHTML = "Kursiverad text";
window.frames["namn_på_ram"].document.getElementsByTagName("BODY")[0].appendChild(elm);
:)
Så tacksam för hjälpen.. men jag gör precis som du skriver men får bara fel.
varför ska det inte bara gå med
window.frames["toc"].document.innerHTML = "bla bla";
?
toc är mitt frame-namn
Peter SMedlem sedan dec. 20025 483 inlägg Vad får du för felmeddelande? Var i dokumentet skall HTML-koden infogas?
:)
har en frameslösning med säg top,main,toc
Toc är menyn till vänster. I framessidan har jag inkluderat en js fil som skriver hela menyn, problemet är att jag inte kan kolla om en sessionsvarabel är uppfylld eller inte då.
Därför tänkte jag att om jag skapar en asp sida med kontrollen och sedan låter js filen skriva till menyn till den sidan så skulle jag kunna kombinera det hela.
Hopps ni hänger med..
Peter SMedlem sedan dec. 20025 483 inlägg Var i dokumentet i "toc"-ramen skall HTML-koden skrivas? T.ex.: Låt säga att "toc"-sidan ser ut så här:
<html>
<head></head>
<body>
<div id="meny"></div>
</body>
</html>
Då kan du skriva till <div>-elementet så här:
top.frames["toc"].document.getElementById("meny").innerHTML = "...";
:)
testar... kan jag sätta id på vad som helst och sedan nå det via get element by id.
toc kommer att vara typ
<html>
<head></head>
<body>
<Table>
<TR><TD>Detta finns innan</TD></TR>
<TR><TD id="change_this">**Ska skrivas in av jsfilen</TD></TR>
<TR><TD>Detta finns innan</TD></TR>
</body>
</html>
YES! Det funkar.. satte ID på tabellrutan..
tack så mycket för din hjälp!!!
NU ska här kodas.. =)
Peter SMedlem sedan dec. 20025 483 inlägg Skoj! :bire
Använd gärna funktionen "Acceptera som slutgiltigt svar".
:)
Problem igen.. med netscape..
Funkar hur bra som helst i IE... som vanligt,, men ngt i raden
top.frames["toc"].document.getElementById("change_this").innerHTML = "xxx" når inte fram i ne.
Försöker lita ut vad det kan vara.. kan det vara top.frames["toc"] som inte funkar??
får felet
document.getElementById is not a function.
i netscape.. 4.5
ngn som vet ett alternativ?
Peter SMedlem sedan dec. 20025 483 inlägg document.getElementById() stöds ej av NS4.x. Ett möjlig lösning kan vara att göra enligt följande (om jag använder ditt tidigare tabellexempel):
<script type="text/javascript">
function ns4() {
if (typeof document.layers != "object") return;
document.write("<i>Kursiverad text</i>");
// O.s.v.
}
</script>
<html>
<head></head>
<body>
<Table>
<TR><TD>Detta finns innan</TD></TR>
<TR><TD id="change_this">[b]<script type="text/javascript">ns4()</script>[/b]</TD></TR>
<TR><TD>Detta finns innan</TD></TR>
</body>
</html>
:)
ok, men då är jag väl tillbaka till ruta 1 med att den skriver över befintlig kod som finns i filen väl.
Peter SMedlem sedan dec. 20025 483 inlägg Ovanstående kod skriver ej över den befintliga filen. Du kan även göra så här:
<script type="text/javascript">
function ns4() {
if (typeof document.layers != "object") return;
document.write("<ilayer id='change_this1'><layer width='100' height='100' id='change_this'></layer></ilayer>");
}
</script>
<html>
<head></head>
<body>
<Table>
<TR><TD>Detta finns innan</TD></TR>
<TR><TD id="change_this"><script type="text/javascript">ns4()</script></TD></TR>
<TR><TD>Detta finns innan</TD></TR>
</body>
</html>
Och sedan nå lagret med:
var doc = top.frames["toc"].document.layers["change_this1"].document.layers["change_this"].document;
doc.open();
doc.write("<i>Kursiverad text</i>");
// O.s.v.
doc.close();
:)
Tack för svaret, funkar nu i netscape och i explorer.. för PC men nu när jag kollar på MAC så funkar det inte.. jag bli galen på sånt här.. allt för att jag var tvungen att kolla om en liten sessionsvariabel fanns eller inte.. grrrrrr..