Zdar,
chcel by som vediet, ci je mozne ulozit viac hodnot (nasledne zobrazit) pomocou premennej napr.:
p[1] = ["a","b","c"];
..to znamena, ze ak zadam na vypis document.write.p[1]; , nechcem vypisat 'prvy' prvok pola, ale vsetky prvky. Pozor, nechcem pouzit funkciu slice(). Jednoducho do premennej p[n] potrebujem ukladat viac hodnot a nasledne vypisovat v tvare doument.write.p[n].
Vysledok: a,b,c
Diik
Fórum › JavaScript, AJAX, jQuery
Pole s viacerymi hodnotami -zapis, vypis
nemyslis treba vicerozmerna pole?
http://www.devarticles.com/c/a/JavaScript/JavaScript-Arrays/1/
Máš tam chybu - místo: dokument.write.p[n] má být: document.write(p[n])
Napadlo mě dvojí využití - buď mít v poli p[0] - p[n] fragmenty použitelné pro dynamický výstup kódu,
nebo pro výstup hodnot(např.ladících) ve formě seznamu. Přiklady obojího jsou v kódu na konci.
Jinak:
Ukládání polí do pole (jde o ekvivalent 2rozměrného pole) se neliší od ukládání do obyčejných proměnných.
Při výpisu se pole převede na řetězec metodou: pole.toString() = pole.join() = pole.join(",") ,která
mezi řetězce získané z prvků (metodou prvek.toString()) vloží čárky.
(Nevím,jestli to tak dělají všechny prohlížeče, např. Netscape4 + JSverze1.2 přidával za čárky mezery a výsledek dal do [...];
přidal jsem do ukázky možnost simulace takového zobrazování)
Pro pole řetězců [a,b,c] je výsledek konverze trivialní: a + "," + b + "," + c
K "zajímavějším" výsledkům dochází, je-li prvkem např. objekt, pole(event.vícerozměrné),nebo odkaz na hlavní pole
(pro názornost jsem tyto případy zahrnul do ukázky).
<Bombónek> zkuste předpovědět/zdůvodnit výpis hodnoty: pole[6] pole[7] a pole </Bombónek>
COPY/PASTE.....
<!-- Testováno a plně funkční: IE 6/7 ---->
<!-- Co se týče jiných browsrů...ví Bůh -->
<html><head><title>ELEMENTS of ARRAY</title>
<STYLE>
<!-- změnou FONT-SIZE u BODY,event. POKEC,LTAB lze dosáhnout optimálního využiti brows.window -->
BODY {FONT-SIZE: 90%; MARGIN: 0em; WIDTH: 60%; FONT-FAMILY: Arial,Verdana, Arial, lucida, sans-serif; }
.POKEC {FONT-SIZE: 90%; margin:1em }
.LTAB {FONT-SIZE: 100%;padding-top:6pt; font-family: arial,tahoma,sans-serif; background: #FFFF77;}
.LTAB B {text-align:center; padding-left:6pt; margin-bottom: 0.4em; width: 22em; letter-spacing: -0.02em }
.LTAB SPAN {color: #0000C8; font-family: monospace; letter-spacing: 0.02em }
.blik {text-decoration:none; color:#AAAA44}
.LTAB .blik {text-align:center; width:4em;padding:0.2em; font-stretch:condensed; border:solid 2pt #AAAA44; background: #FFFF77}
.LTAB A.blik:hover {color:#0000FF; background:#EEEEFF; border: solid 2pt #8888BB;}
.LTAB FORM {padding-bottom:10pt}
.button {font-size:0.85em; }
B.btns {text-align:justify; height:1.1em;letter-spacing: -0.05em; margin-bottom: 0em; width: 22em;}
B.R {position: relative; top:8px; left: 0px;letter-spacing: 0.04em; width:38em}
.R {BACKGROUND: #E0E0E0; border: solid 1pt red; margin: 0pt; line-height: 110%; color: red; }
P { margin 1px; padding: 0.1em ; FONT-FAMILY: sans-serif;FONT-Style:italic; FONT-SIZE: 1.1em; COLOR: #111111;}
DT H3 SPAN {color: red;letter-spacing: -0.05em}
DT B I, DT B I LI {margin-top: 6%; color: red}
DT B LI {margin-top: 10%; color: black}
PRE {line-height: 0%}
PRE,H4 {MARGIN-LEFT : 1em; FONT-SIZE: 100%;}
PRE I SPAN { font-family: monospace; FONT-SIZE: 0.75em; COLOR: #BB0000;}
PRE I { FONT-SIZE: 1em; COLOR: #00AA00;}
H3 {MARGIN-TOP: 1.8em;}
.kod {FONT-SIZE: 1.1em; BACKGROUND: #feeded; COLOR: #0055AA; padding: 10px; BORDER: #888888 1px solid; }
.kod A:hover {color:#FF0033; background:#feeded; }
.kod A:active {color:#FFAAAA; background:#222222; }
DD {margin : 10px; border: solid 1pt black; font-family: monospace; border: solid 1px; letter-spacing: -0.03em}
DD.kod {padding: 6px; border: solid 1pt black; font-family: monospace; border: solid 1px; letter-spacing: -0.03em;}
B DD {font-size: 1.1em; padding: 0pt; border: solid 0pt}
</STYLE>
<script>
txtA = "vyhledávač" ; URLa = "http://www.google.cz/search?as_q=array&num="+val();
txtB = "TUČNÝ"; URLb = "http://interval.cz/vyvoj-aplikaci/javascript/"+val()/7;
txtC = "sMÍCHAL"; URLc = "#"; /*----------------------------*/
/* |Docílen požadovaný výsledek */
kotva=val(); /* URL/KOTVA: způsob vložení do odkazu <A> | při write(pole[i].join(""))?*/
dokaz = ["</A>"]; /* ----------------------------------------|-----------------------------*/
completA = txtA.link(URLa); /* Jako argument metody 'obsah'.link(url) | ANO <A href='src'>text</A> */
odkazB =["<A name='#"+ ++kotva+"'href='"+URLb+"'>"];/* 1 z řetězců spojených v otevíracím tagu | ANO <A href='src'> */
odkazC1=["<A name='#",++kotva,"' href='",URLc,kotva,"'",">"]; /* Prvek ve vnořeném poli | NE <A name='#1'href='#1'> */
odkazC2=["<A name='#",++kotva,"' href='",URLc,kotva,"'",">"].join("");/* Vnořené pole =>string | ANO <A name='#2'href='#2'> */
/* | */
/*FINTA: Modifikace metody Array.toString , aby prováděla join("")[=joint] místo join(",") |---------------------------- */
/* a) pro 1 pole (ne jeho vnořená pole) : pole[4].toString=joint pole[4]: |Docílen požadovaný výsledek */
/* b) pro každý objekt ARRAY (i vnořené): Array.prototype.toString=joint | při write(pole[i])? */
/* |---------------------------- */
odkazC3=["<A name='#",++kotva,"' href='",URLc,kotva,"'",">"]; /* ANO <A name='#3'href='#3'> */
pole=new Array(); Array.prototype.joint=function(){return this.join("")};
pole[0]=["<LI>","Jsem ",completA," "];
pole[1]=["<B><BIG>",odkazB,txtB,dokaz," </BIG></B>"]; /* VÝHODA POLÍ OPROTI ŘETĚZCŮM => MOŽNOST MODIFIKACE:*/
pole[2]=["<I><BIG>",odkazC1,txtC,dokaz,"</BIG></I>"]; /* pole[2][2]+="NE" */
pole[3]=["i3","i33","i333"," PŘIPOJ"]; PRIPOJ(pole,location); /* pole[2][1]=odkazCx; */
pole[4]=[4,[44],[[444,[" KONEC"]]]]; /* pole[2].splice(0,1,"<I style='font-style:oblique'>","NE");*/
pole[5]=[document.title,pole.joint,top,location];
pole[6]=[[pole,["pole",pole]],pole];
pole[7]=["pred",pole,"po"];
function PRIPOJ(p,obj) {
p = p[((p.length)-1)];
for ( p[p.length] in obj); }
function val(){return String(Math.random()).substr(2,2)};
function failed(){ return !(window.location.hash.charAt(0)=="#" )};
function addmouse(od){
for(var i=0,l=document.links;od<l.length;od++) {
l[od].setAttribute('title','pole['+i++%3+']');
l[od].onclick=function(){alert(this.outerHTML)};}
}
/*============================ 3 VÝSTUPNÍ OKNA pro zobrazení [objekt: hodnota] ======================*/
var winActiv="";
var normal=false;
var win={plain:null,html:null};
var txtButton={plain:"TEXT document",html:"HTML document"};
txtButton[""]="ALERT window";
var txtSwitch=["-> BEZ ÚPRAV","-> LITERÁL"];
var lastValue="";
/*---------------------------------------Je odkazem na platný POPUP ?*/
function tst(w){return w && !w.closed}
/*------------------------------------------------Manipulace s POPUPy*/
function handle(Fcall){
if (tst(win.plain))Fcall("plain");
if (tst(win.html)) Fcall("html"); }
function Focus(t){win[t].focus() }
function Close(t){win[t].close(); win[t]=null }
/*------------------------------------------------Zavřít POPUPy*/
function uklid(){ handle(Close); }
/*================================================ ukaz(objekt,$TypOKNA$,Array_as_literal)*/
function ukaz(x,typ,literal) {
function setActiv() {
var form=window.document.frm; winActiv=typ;
form.btn.value=["ZOBRAZ <"+txtButton[typ]+">"];
if (typ) return;
frm.vstup.select();
if (x) lastValue=frm.vstup.value;
else frm.vstup.value=lastValue;
}
function wopen(_win,params,text){
if ( tst(_win) && !_win.flag ) _win.close();
if (!tst(_win)) {
_win = window.open("",typ,params);
_win.document.open("text/"+typ);
_win.document.onkeypress = function(){Close(typ);handle(Focus)};
_win.document.onclick = setActiv ;
_win.flag=true;
}
_win.scrollTo(0,10000);
_win.document.writeln(text[0]);
_win.document.writeln(text[1]);
_win.document.writeln(text[2]);
if (_win.document.readyState=="interactive")
_win.document.title = "document.open(\"text/"+typ+"\")" ;
handle(Focus);
_win.scrollBy(0,sH*2/3);
_win.focus();
return _win;
}
function naLit(x) {
if (typeof x=="string"){return "\""+x+"\"";} else
if ((typeof x=="object")&& x["constructor"]&& (x["constructor"]==Array))
{for(var i=0,tmp="[";i<x.length;i++){tmp+=(i?", ":"")+naLit(x[i])}; return tmp+"]" }
else return x;
}
var head=["»»» "+x+" «««\n"], body=["--------[ NELZE VYHODNOTIT ]--------"];
try{
body=eval(x);if (literal) body=naLit(body)}catch(error){}
var sH = screen.height/2;
var wW = (screen.availWidth - 120);
var _h4 = "style='padding: 0.25% 0% 0.2% 0%; background:#BBBBBB'";
var _tag= "style='color:#1111FF'";
var h_pre="<H4 "+_h4+"> <SPAN "+_tag+"> »»» </SPAN> ";
var h_post=" </SPAN><SPAN "+_tag+"> ««« </SPAN></H4>";
var wOut=new Object; wOut.plain= [[""+head],body,t=(t=(t=(t=(t="—————")+t+t+t)+t+t+t)+t+t+t)];
wOut.html = [[h_pre + x + h_post],body,["<BR>"]];
var wPar=new Object; wPar.plain= ["top="+(sH+50),"left=0,"];
wPar.html = ["top="+(sH-50),"left=100,"];
wPar.skin = ["width="+wW,"height="+sH*2/3,"resizable,scrollbars"];
if (!x) typ="";
setActiv();
if (typ) win[typ]=wopen(win[typ],wPar[typ]+wPar.skin,wOut[typ]);
else
if (x) alert(head+"\n"+body);
}
/*========================================================================================================*/
/*---------------------------------------------------------------------------aktualizuje text(SWITCH)*/
function setTxtSw(){window.document.frm.sw.value=txtSwitch[normal+0]; }
/*-----------------------------------------------------inic. BUTTON + SWITCH; aktivace TEXT/INPUT_LINE*/
function actiVstup(f) {
if (window.location.hash=="") window.location.hash="#";
window.onfocus=function(){f.vstup.setActive()};
ukaz("","",normal);
f.vstup.value=' pole[3].join("<\\P>"); // Zde můžeš zadat výraz /popř. příkaz(y)/ JS ';
f.vstup.select();
setTxtSw();}
/*-----------------------------------------------------vrátí HTMLtext s (1+POCET) x <A onclick=OBSLUHA>*/
function getLinksTxt(pocet,okno){
odkaz="<A HREF='' onClick='this.blur();ukaz(this.innerHTML,\""+okno+"\",normal);return false' class='blik'>"; dokaz="</A> ";
document.write(odkaz,"pole",dokaz);
for (i=0;i<pocet;i++)
document.write(odkaz,"pole[",i,"]",dokaz);}
</script>
</head>
<body link=#8800EE vlink=#aaaa00 alink=#000000 onLoad="actiVstup(document.frm)" onUnload="uklid()">
<div CLASS="LTAB">
<B>Vypíše hodnotu pole - funkcí <SPAN> ALERT()</SPAN></B><script>getLinksTxt(8,"")</script>
<BR>
<B>Totéž: funkcí<SPAN> TEXT/document.WRITE()</SPAN></B><script>getLinksTxt(8,"plain")</script>
<BR>
<B>Totéž: funkcí<SPAN> HTML/document.WRITE()</SPAN></B><script>getLinksTxt(8,"html")</script>
<BR>
<B></B><B class="R">Okno <TEXT/HTML document> uzavři stisknutím libovolné klávesy
</B>
<FORM name="frm" onSubmit="ukaz(this.vstup.value,winActiv,normal);return false">
<B class="btns">
<!-- Zmáčknutím tlačítka se zobrazí: eval(vstupní hodnota) / Lze použít i ENTER -->
<INPUT name="btn" type="submit" class="button" style='width:15em' title=" VYHODNOTIT + ZOBRAZIT " value="ZOBRAZ">
<!-- Zmáčknutím tlačítka se přepne režim zobrazování (NORMAL x LITERAL) -->
<INPUT name="sw" type="button" class="button" style='width:9em;' title="PŘEPÍNAČ REŽIMU ZOBRAZENÍ" value="PŘEPNI" onClick='normal=!normal;setTxtSw()'>
</B>
<!-- Zadejte JS kód: [příkaz;příkaz;....][výraz] -->
<INPUT name="vstup" type="text" size=100 style='width:64%;font-size:1.1em;' title=" PROVÉST: použij ENTER nebo tlačítko ZOBRAZ NASTAVIT ALERT: zadej prázdné pole " value=''>
</FORM>
</div>
<div class="POKEC">
<script>
var lastlink=document.links.length;
</script>
<H4><U> Použité proměnné a pole - definice </U></H4>
<PRE> </PRE>
<PRE>txtA = "vyhledávač" ; URLa = "http://www.google.cz/search?as_q=array&num="+val()</PRE>
<PRE>txtB = "TUČNÝ"; URLb = "http://interval.cz/vyvoj-aplikaci/javascript/"+val()/7</PRE>
<PRE>txtC = "sMÍCHAL"; URLc = "#" <I> </I></PRE>
<PRE> <I>| Docílen požadovaný výsledek</I></PRE>
<PRE>kotva=val(); <I>URL/KOTVA: způsob vložení do odkazu <A> | při write(pole[2].join(""))?</I></PRE>
<PRE>dokaz = ["</A>"]; <I>----------------------------------------|-----------------------------</I></PRE>
<PRE>completA = txtA.link(URLa); <I>Jako argument metody 'obsah'.link(url) | ANO <A href='src'>text</A></I></PRE>
<PRE>odkazB =["<A name='#"+ ++kotva+"' href='"+URLb+"'>"] <I>1 z řetězců spojených v otevíracím tagu | ANO <A href='src'></I></PRE>
<PRE>odkazC1=["<A name='#",++kotva,"' href='",URLc,kotva,"'",">"] <I>Prvek ve vnořeném poli | NE <A name='#1'href='#1'></I></PRE>
<PRE>odkazC2=["<A name='#",++kotva,"' href='",URLc,kotva,"'",">"].join("") <I>Vnořené pole -> string | ANO <A name='#2'href='#2'></I></PRE>
<PRE> </PRE>
<PRE><I>FINTA: Modifikace metody Array.toString , aby prováděla join("")[=joint] místo join(",") </I></PRE>
<PRE><I> a) pro 1 pole (ne jeho vnořená pole) : pole[4].toString=joint <SPAN>pole[4]: "444444, KONEC"</SPAN> | Docílen požadovaný výsledek</I></PRE>
<PRE><I> b) pro každý objekt ARRAY (i vnořené): Array.prototype.toString=joint | při write(pole[2])? </I></PRE>
<PRE><I> |----------------------------</I></PRE>
<PRE>odkazC3=["<A name='#",++kotva,"' href='",URLc,kotva,"'",">"]; <I>| ANO <A name='#3'href='#3'></I></PRE>
<PRE> </PRE>
<PRE>pole=new Array(); Array.prototype.joint=function(){return this.join("")}</PRE>
<PRE>pole[0]=["<LI>","Jsem ",completA," "];</PRE>
<PRE>pole[1]=["<B><BIG>",odkazB,txtB,dokaz," </BIG></B>"];</PRE>
<PRE>pole[2]=["<I><BIG>",odkazC1,txtC,dokaz,"</BIG></I>"];</PRE>
<PRE>pole[3]=["i3","i33","i333"," PŘIPOJ"]; PRIPOJ(pole,location); | function PRIPOJ(p,obj) {</PRE>
<PRE>pole[4]=[4,[44],[[444,[" KONEC"]]]]; | p = p[p.length-1];</PRE>
<PRE>pole[5]=[document.title,pole.joint,top,location]; | for(p[p.length] in obj) }</PRE>
<PRE>pole[6]=[[pole,["pole",pole]],pole];</PRE>
<PRE>pole[7]=["pred",pole,"po"];</PRE>
<PRE> </PRE>
<DL>
<DT>
<H3>Výpis polí: 0,1,2 => write(pole[N].join("")) => spojení prvků (bez oddělovače) <SPAN>[ výstup kódu HTML ]</SPAN></H3>
<DD class="kod">
<P> HODNOTA pole[2] SELHALA:
<script>
if (failed()) {
document.write('<SPAN class="R"> ŘÁDEK ZPŮSOBUJE CHYBU SYNTAXE </SPAN></P>');
pole[2][2]=pole[2][2].strike(); /* .......přeškrtneme_txtC_ */
document.write(pole[0].joint());
document.write(pole[1].joint());
document.write(pole[2].joint()); /* ŘÁDEK ZPŮSOBUJE CHYBU SYNTAXE*/
} else {
document.write('</P>');
document.write(pole[0].joint());
document.write(pole[1].joint());
document.write("<A href=''></A>");
}
</script>
<DD class='kod'>
<P> NÁPRAVA: ZMĚNA pole[2][1]=odkazC2 : </P>
<script>
pole[2][2]=txtC; /* .......nepřeškrtnutý_txtC_*/
pole[2][1]=odkazC2; /* (záplatujeme) */
document.write(pole[0].joint());
document.write(pole[1].joint());
document.write(pole[2].joint());
</script>
<DT>
<H3>Výpis polí: 0,1,2 => write(pole[N]) ( Po modifikaci metody toString u objektů Array )</H3>
<DD class="kod">
<script>
pole[2][1]=odkazC3; /* ....... =odkazC1 ,ale teď neselže */
var orig = Array.prototype.toString;
Array.prototype.toString = Array.prototype.joint; /* = function(){return this.join("")} */
document.write(pole[0].joint());
document.write(pole[1].joint());
document.write(pole[2].joint());
Array.prototype.toString = orig;
addmouse(lastlink); /* obohatili jsme naše výtvory atributy pro sledování hodnot pomocí myši*/
</script>
<DT>
<P><P>
<H3>Výpis polí: 3,4,5 => write(pole[N]) => prvky jsou oddělené čárkami <SPAN>[ ladící výstup ]</SPAN></H3>
<script>
document.write("<DD class='kod'><P>pole[3]:</P>",pole[3]);
document.write("<DD class='kod'><P>pole[4]:</P> ",pole[4]);
document.write("<DD class='kod'><P>pole[5]:</P> ",pole[5]);
</script>
<DT>
<B><I><LI> Chceme-li vypsat více polí jako 1 seznam pak namísto:</I>
<DD> write(pole[3],pole[4],pole[5])</B>
<DD class="kod">
<script> document.write(pole[3],pole[4],pole[5]);</script>
<DT>
<B><I> použijeme metodu:</I>
<DD> write([].concat(pole[3],pole[4],pole[5]) </B>
<DD class="kod">
<script> document.write([].concat(pole[3],pole[4],pole[5])); </script>
<DT>
<B><LI> NA ZÁVĚR: Spojme pole[6] + pole[7] .....A MÁME ZMÆTEK ! </B>
<script>
document.write("<DD><H4> pole[6]: </H4>",pole[6]);
document.write("<DD><H4> pole[7]: </H4>",pole[7]);
document.write("<DD><H4> pole[6]+pole[7]: </H4>",[].concat(pole[6],pole[7]));
</script>
</DL>
</div></body ></html>
_______________________________________________________________________________________________________________ :ms_0787: Petr
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
JSP zobrazovanie stranky viacerymi user-mi — založil vlado0991
Výpis pole — založil Tominek
Výpis pole — založil Row
Vypis pole — založil Al
Výpis pole — založil pav
Moderátoři diskuze