haiderMedlem sedan jan. 2003988 inlägg
Kan man via en siffra få en array att bli så stor som siffran anger?
Ex. skriptet(5); ?
Om jag vidareutvecklar det; anta att du har ett "block" där blocket är en kodtext, kan man då få ett array att skriva ut dessa block så många gånger, som man angivit i "skriptet(2);" ?
Så att resultatet blir 2 gånger nedanstående
<div style='padding-bottom:5px'>
<a href='java script:swapPic(0);'>
<img id='PicButton_0' src='/test/sidan/1_on.gif' width='13' height='13' border='0'>
</a>
</div>
Eller om siffran hade varit skriptet(8);, att den då skriver ut koden 8 gånger, går det?
MorphMedlem sedan juli 2000472 inlägg
När du skapar arrayen kan du ange hur stor den ska vara.
skriptet = new Array(5)
Du behöver inte dimensionera om arrayen om du senare vill ha fler element. Arrayer i JavaScript är dynamiska så om du lägger till ett element på t.ex. position 8 i ovan skapade array så ökas "storleken" på arrayen automatiskt till 8.
När det gäller din andra fråga förstår jag inte riktigt vad du vill uppnå, men en for-loop gör nog susen:
for (i=0; i < skriptet.length; i++) {
document.write('<div style="padding-bottom:5px">');
document.write('<a href="javascript:swapPic(0);">');
document.write('<img id="PicButton_0" src="/test/sidan/1_on.gif" width="13" height="13" border="0">');
document.write('</a>');
document.write('</div>');
}
nitro2k01Medlem sedan aug. 20037 630 inlägg
for (i=0; i < skriptet.length; i++) {
document.write('<div style="padding-bottom:5px">');
document.write('<a href="java script:swapPic(' + i + ');">');
document.write('<img id="PicButton_' + i + '" src="/test/sidan/1_on.gif" width="13" height="13" border="0">');
document.write('</a>');
document.write('</div>');
}
Det var nog mer nåt sånt här han menade.
haiderMedlem sedan jan. 2003988 inlägg
nitro: så om jag gör ett skript som ex. heter skriptet(); där jag inne i parantesen skriver ex. skriptet(8);, så kan jag alltså ha en funktion som heter nåt som:
function skriptet(i); och så kan jag använda "i" så som du använder den i din kod?
Jag vill att skriptet ska "printa" ut ett antal bilder med varsitt nummer, jag tror att du förstod det, i och med ditt inlägg.
nitro2k01Medlem sedan aug. 20037 630 inlägg
Du menar så här (Test)
function visaNummer(i){
alert("Och numret är... " + i);
}
visaNummer(4);
Detta är ett enkelt exempel på hur en funktion kan se ut.
function skrivBild(k){
document.write('<div style="padding-bottom:5px">');
document.write('<a href="java script:swapPic(' + k + ');">');
document.write('<img id="PicButton_' + k + '" src="/test/sidan/1_on.gif" width="13" height="13" border="0">');
document.write('</a>');
document.write('</div>');
}
for (i=0; i < antalBilder; i++) {
// Skriv ut
skrivBild(i);
}
haiderMedlem sedan jan. 2003988 inlägg
Jo, i teorin ser det bra ut, nu ska jag nanna och testa det så snart som möjligft
Du är en klippa! (Hmm, det säger jag innan jag ens testat det, känn dig inte tuff nu i förskott ;) )
nitro2k01Medlem sedan aug. 20037 630 inlägg
Tuff känner jag mig ändå :| (Ska visa varför om inte allt för länge!)
Jag vet inte hur mycket javascript du kan, så du kanske redan kan detta, men det kanske var detta du menade:
testArray = new Array(5);
testArray[4] = 25;
// Denna ska nu visa värdet 25
alert(testArray[4]);
Detta är hur man deklarerar en array, och skriver ett värde till den. Detta motsvarar följande i VB:
Dim testArray (5)
testArray(4) = 25
msgbox str$(testArray(4))
Det kanske var det du fiskade efter egentligen.
haiderMedlem sedan jan. 2003988 inlägg
Tjena Nitro
Jo, jag är inte så bra på jscript, alltså, jag klarar inte av att knåpa ihop script på egen hand, men jag begriper mig på det så pass att jag kan modifiera dem lite och pussla samman dem.
Ditt sista exempel behöver jag nog inte, eftersom ditt senaste exempel tycks vara bättre.
Hur som helst, jag testade detta av dina exempel:
function skrivBild(k){
document.write('<div style="padding-bottom:5px">');
document.write('<a href="java script:swapPic(' + k + ');">');
document.write('<img id="PicButton_' + k + '" src="/test/sidan/1_on.gif" width="13" height="13" border="0">');
document.write('</a>');
document.write('</div>');
}
for (i=0; i < antalBilder; i++) {
// Skriv ut
skrivBild(i);
}
I och med for (i=0; i < antalBilder; i++) så trodde jag att scriptet skulle loopa k antal gånger, men det gjorde den inte.
Ska jag byta ut "i" mot "k"? ska testa under tiden
nitro2k01Medlem sedan aug. 20037 630 inlägg
Alltså jag bytte ut i mot k där av tydlighetsskäl.
k är den variabel som används i funktionen, medan i på ett annat ställe används i en for-loop.
// När du anropar t ex skrivBild(5) så sätts [b]k[/b] till 5 och funktionen körs
function skrivBild(k){
document.write('<div style="padding-bottom:5px">');
document.write('<a href="java script:swapPic(' + k + ');">');
document.write('<img id="PicButton_' + k + '" src="/test/sidan/1_on.gif" width="13" height="13" border="0">');
document.write('</a>');
document.write('</div>');
}
// [b]i[/b] används här för att iterera en for-loop. I detta exempel skickas värdet på [b]i[/b] till funktionen skrivBild()
// Alltså sätts [b]k[/b]'s värde till i i funktionen ovan och sen körs funktionen.
// Dessa rader skriver ut alla bilder mellan 0 och [b]antalBilder[/b]'s värde.
for (i=0; i < antalBilder; i++) {
// Skriv ut
skrivBild(i);
}
// Funktionen kallas med värdet 3. Då sätts k=3 och funktionen körs sedan.
// Denna rad skriver ut bild 3
skrivBild(3);
haiderMedlem sedan jan. 2003988 inlägg
Okej
Då var det precis som jag hade tänkt mig.
Men jag får det inte att funka.
Det som sker är att dokumentet rensas, ungefär som om man hade kört nån clear.
För när man klickar på en länk med href, ex. "javascript:skrivBild(3);" så "hamnar" man i en tom sida med kodsnutten med den sista siffran, i det här fallet 3, istället för att alla tre finns med.
Å andra sidan, nu när jag skriver det, så kanske det inte framgick? Eller jo, jag sa ju i början av tråden att jag ville att den skulle skriva ut samma kod X antal gånger.
Det verkar som om den inte kan skriva koden efter varandra.
Är det jag som ser spöken, eller är det ett spöke i koden?
Kolla isåfall denna för säkerhets skull: http://www.3d.stenebyskolan.se/haider/script-test.htm
Ah, just det, det verkar som om antalBilder är odefinierad. Nånstans bör det antagligen stå "var" inte sant?
nitro2k01Medlem sedan aug. 20037 630 inlägg
Det är mycket riktigt att antalBilder bara var ett uppdiktat namn. Du kan själv ersätta det med rätt variabel, alt. ett numeriskt värde.
Så det du vill är alltså att när man klickar på en länk så skrivs all bilder mellan 0 och ett givet nummer ut? Så jag har förstått dig rätt.
Det första prolemet som man måste tackla då är att document.write inte kan användas efter det att sidan har laddats. Då måste man använda andra metoder.
Men berätta så noggrannt du kan hur du egentligen vill att sidan ska funka.
haiderMedlem sedan jan. 2003988 inlägg
Okej
Det jag eftersträvar är mycket likt det du har skrivit så här långt.
Jag kan beskriva det på det sättet.
Om jag skriver koden skrivBild(3); så ska den skriva en viss kodsnutt 3 gånger efter varandra, plus att den ändrar en del av koden, nämligen ett nummer, så att varje gång koden skrivs, så har den ett större nummer tills den når max som är den siffra man har angett mellan parantesen.
Skriver man alltså skrivBild(3); så ser det plötsligt ut så här inne i dokumentet:
<div style='padding-bottom:5px'>
<a href='java script:swapPic([b]0[/b]);'>
<img id='PicButton_[b]0[/b]' src='/test/sidan/[b]1[/b]_on.gif' width='13' height='13' border='0'>
</a>
</div>
<div style='padding-bottom:5px'>
<a href='java script:swapPic([b]1[/b]);'>
<img id='PicButton_[b]1[/b]' src='/test/sidan/[b]2[/b]_on.gif' width='13' height='13' border='0'>
</a>
</div>
<div style='padding-bottom:5px'>
<a href='java script:swapPic([b]2[/b]);'>
<img id='PicButton_[b]2[/b]' src='/test/sidan/[b]3[/b]_on.gif' width='13' height='13' border='0'>
</a>
</div>
Som du noterar, så har den skrivit ut den tre gånger efter varandra.
Det trodde jag att koden du gav mig först gjorde, men tydligen så suddades det gamla ut.
Anropar man genom skrivBild(9); så skriver den ut koden 9 gånger och siffran inne i, ändras förstås.
Det första prolemet som man måste tackla då är att document.write inte kan användas efter det att sidan har laddats. Då måste man använda andra metoder.
Hmm, det ante mig väl. Jag blev överraskad när Morph föreslog den, men så tänkte jag inte mer på det eftersom jag bara ville få det undanstökat.
En fråga till.
En annan siffra i koden ska också ändras, men den är +1 gånger mer än den första.
Kan man skriva typ (det fetmarkerade):
document.write('<img id="PicButton_' + k + '" src="/test/sidan/'[b] + k +1 + [/b]'_on.gif" width="13" height="13" border="0">');
nitro2k01Medlem sedan aug. 20037 630 inlägg
function skrivBilder(antalBilder){
for (i=0; i < antalBilder; i++) {
document.write('<div style="padding-bottom:5px">');
document.write('<a href="java script:swapPic(' + i + ');">');
document.write('<img id="PicButton_' + i + '" src="/test/sidan/1_on.gif" width="13" height="13" border="0">');
document.write('</a>');
document.write('</div>');
}
}
// Denna rad skriver ut 3 bilder
skrivBilder(3);
Men har du verkligen behov av att använda denna EFTER att dokumentet laddats?
haiderMedlem sedan jan. 2003988 inlägg
Men har du verkligen behov av att använda denna EFTER att dokumentet laddats?
Hmm, utifrån det att du frågar får jag en känsla av att det är en dålig idé med tanke på att den verkar "sudda ut" sidan tillfälligt så att säga.
Innan jag beskriver exakt hur det är tänk att använda skriptet undrar jag:
- Varför tar den bort allting? Jag hade för mig att man måste köra nån document.clear innan, eller??
Så hade jag tänkt att använda din kod.
Jag har ett litet script, som skapar en div och döljer den igen. Min idé var att kombinera samman dem
Div-scriptet skapar i praktiken ett tomt div-lager. Via anropet kan man göra så att lagret får ett visst innehåll genom att ange det i parantesen.
Men jag vill bara kunna ange en siffra, så att siffran kan användas så som vi hittills gjort i ditt script (nu funkar det, så du kan känna dig lite tuff, inte helt, för det är lite kvar ;))
Men, om det är så att write-metoden suddar bort dokumentet, så rasar ju hela idén, såvida man inte kan göra nån slags refresh "när man går tillbaks", men det vill jag i och för sig inte heller använda.
Det var det som är hela poängen med min idé.
Div-scriptet gör ett lager som lägger sig över hela sidan, att besökaren får intrycket av att man är inne på en ny sida med bilder.
När man stänger divven är man direkt tillbaka till "föregående sida", som i själva verket är sidan under.
Är du med hur jag tänker?
Behöver du se div-scriptet för att skapa dig en bättre uppfattning?
edit: Jag fick många saker att funka - du kan få kolla på resultaten snart, men jag väntar tills du svarat, för vissa frågor är intressanta för mig att veta. Så du inte blir distraherad från ovanstående.
nitro2k01Medlem sedan aug. 20037 630 inlägg
Jag orkar inte skriva nåt särskilt utförligt svar, men ger dig följande tips på kommandon för att skriva något efter att sidan laddats.
// Antingen
// Byta ut allt inuti en div:
document.getElementById("divens_id").innerHTML = "Text och <b>HTML-kod</b>";
// Eller...
// Lägga till nåt i slutet av en div
document.getElementById("divens_id").insertAdjacentHTML("beforeEnd", "Text och <b>HTML-kod</b>");
Giltiga värden på första argumentet är beforeBegin, afterBegin, beforeEnd, afterEnd, beroende på var du vill placera texten. Observera att beforeBegin och afterEnd placerar texten utanför div'en. Nu får du försöka själv lite grann.
Till sist ett annat litet trick:
// Ta bort en div helt och hållet:
document.getElementById("divens_id").outerHTML = "";
haiderMedlem sedan jan. 2003988 inlägg
Det tipsen är otroligt bra! Jag frågade jojoxx om detta en gång, men fick dessvärre inte svar på det. Särskilt detta att "rensa" en div, letade jag efter jättelänge.
Jag ska ta en funderare ang. div.
Under tiden kan du kolla på:
http://www.animadesign.se/test/script-test.htm
Det kan funka så, jag får bara klämma in en "history.back();" så att man går tillbaka till orginalsidan.
I annat fall ska jag undersöka om jag kör med div-metoden istället.
Anser du att det finns någon nackdel i den tekniken som jag använde i länken ovan? alltså write-metoden, efter att sidan laddats?
En liten fråga till:
for (i=0; i < antalBilder; i++) {
document.write('<div style="padding-bottom:5px">');
document.write('<a href="javascript:swapPic(' + i + ');">');
document.write('<img id="PicButton_' + i + '" src="sidan/' + (i + 1) + '_[b]on[/b].gif" width="13" height="13" border="0">');
document.write('</a>');
document.write('</div>');
}
Om man tittar på den fetmarkerade biten, hur gör man en if-else så att, om i=0 så ska det stå on annars är det off
tack så hemskt mycket
J.N.Medlem sedan apr. 20031 660 inlägg
HEJ!
Ett snabbt försök:
if i==0: var onoff="_on": var onoff="_off"
resp
sidan/' + (i + 1) + onoff +'.gif
Placeras på lämpligt ställe!
Lite osäker på om man kan sätta var som jag gjort, men det märker du!
haiderMedlem sedan jan. 2003988 inlägg
JN: Tack, det var var precis det jag tänkte mig. Jag skrev nåt liknande men gjorde inte riktigt korrekt.