webForumDet fria alternativet
Logga in / Bli medlem

write utan att ersätta befintlig kod.

JavaScript

17 svar · 396 visningar · startad av KalsongCesar

Medlem sedan mars 2001339 inlägg
Trådstart#1

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.

Medlem sedan dec. 20025 483 inlägg
#2

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="java&#115;cript:void(0)" onclick="return f()">Lägg till text</a>

:)

Medlem sedan mars 2001339 inlägg
#3

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

Medlem sedan dec. 20025 483 inlägg
#4

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);

:)

Medlem sedan mars 2001339 inlägg
#5

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

Medlem sedan dec. 20025 483 inlägg
#6

Vad får du för felmeddelande? Var i dokumentet skall HTML-koden infogas?

:)

Medlem sedan mars 2001339 inlägg
#7

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..

Medlem sedan dec. 20025 483 inlägg
#8

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 = "...";

:)

Medlem sedan mars 2001339 inlägg
#9

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>
Medlem sedan dec. 20025 483 inlägg
#10

Japp, i stort sett.

:)

Medlem sedan mars 2001339 inlägg
#11

YES! Det funkar.. satte ID på tabellrutan..
tack så mycket för din hjälp!!!

NU ska här kodas.. =)

Medlem sedan dec. 20025 483 inlägg
#12

Skoj! :bire

Använd gärna funktionen "Acceptera som slutgiltigt svar".

:)

Medlem sedan mars 2001339 inlägg
#13

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??

Medlem sedan mars 2001339 inlägg
#14

får felet
document.getElementById is not a function.
i netscape.. 4.5
ngn som vet ett alternativ?

Medlem sedan dec. 20025 483 inlägg
#15

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>

:)

Medlem sedan mars 2001339 inlägg
#16

ok, men då är jag väl tillbaka till ruta 1 med att den skriver över befintlig kod som finns i filen väl.

Medlem sedan dec. 20025 483 inlägg
#17

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();

:)

Medlem sedan mars 2001339 inlägg
#18

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..

262 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)