Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [szukam] strona z zakładkami
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
eMatys
Witam. Poszukuje javascriptu, który otwierałby zakładki wewnątrz strony, a nie wywoływał dodatkowych stron.
za okazane zainteresowanie dziekuje.
dr_bonzo
Ze co robil?
Co rozumiesz prze pojecie zakladki wewn. strony?
eMatys
Już daje przykład: Coś jak Piu` visti na stronie http://www.html.it/ Mam do wyboru kilka zakładek które są zdefiniowane w js a nie w kilku plikach tekstowych.
Cysiaczek
Witaj.

Zainteresuj się DHTML'em i DOM'em (oczywiście JavaScript również w to wchodzi)
W ten sposób szybko zrobisz takie zakładki, cho trochę się pomęczysz :/
eMatys
A nikt nie widzial gdzies gotowca, bo szczerze mówiąc dhtml, JS jest dla mnie nieco obcy...
Cysiaczek
Poszukaj. Choc wątpię, aby gotowiec Ci się przydał - wszystko zależy od potrzeb twojej strony www, technologii z jakich korzystasz etc. Lepiej się tym zainteresuj mimo wszystko. Mozesz jednak z gotowc 'zerżnąc' co nieco. Nietty i tak musisz poznac javascript tym wypadku.
eMatys
na tyle JS znam by go edytowac, niestety nie znam się na funkcjach, no moze poza popupami
Cysiaczek
spoko. to nie jest takie trudne Po prostu musisz nuczy się manipulowac elementami strony za pomocą JavaScriptu i DOM oraz CSS
eMatys
Jeszcze jakbys przyblizył mi co to jest DOM - CSSa akurat znam. I jak masz jakis kurs do polecenia, o w necie jest tego tyle...

Jeszcze jakbys przyblizył mi co to jest DOM - CSSa akurat znam. I jak masz jakis kurs do polecenia, o w necie jest tego tyle...
Cysiaczek
DOM = Document Object Model
http://www.w3.org/DOM/
eMatys
Cytat(Cysiaczek @ 24.05.2006, 16:41 ) *
DOM = Document Object Model
http://www.w3.org/DOM/

Dzięki za pomoc ale juz znalazłem .js

  1. function individuaOggetto(e){ //individua l'oggetto da cui e' partito l'evento
  2.  
  3. // questa prima parte serve per avere una gestione degli oggetti comune
  4. if (!e) var e = window.event;
  5. // e gives access to the event in all browsers
  6.  
  7. //questa seconda parte individua l'elemento che ha scatenato l'oggetto
  8. var targ;
  9.  
  10. if (e.target) targ = e.target;
  11. else if (e.srcElement) targ = e.srcElement;
  12.  
  13. if (targ.nodeType == 3) // defeat Safari bug
  14. targ = targ.parentNode;
  15.  
  16. //restituisce l'elemento
  17. return targ;
  18.  
  19. }
  20.  
  21.  
  22.  
  23.  
  24. /***************************** funzione che crea i menu *****************/
  25.  
  26. function Menu(menu_id,attivaClick,position,attivaOver,defaultGroup) { //creo una classe menu
  27.  
  28. /** proprieta' della classe
  29. menu_id e' il nome del menu: sempre obbligatorio
  30. attivaClick, attiva l'evidenziazione del menu al click del moude
  31. attivaOver, attiva l'effetto di visualizzione contenuto al mouse over
  32. position, indica la posizione del tab attivo
  33.  
  34. **/
  35. this.menu_id=menu_id;
  36. this.attivaClick=attivaClick;
  37. this.position=position;
  38. this.attivaOver=attivaOver;
  39. this.defaultGroup=defaultGroup;
  40.  
  41. /*** metodi della classe ***/
  42.  
  43. this.Menu=function Menu() { //costruttore
  44. /*** lancio funzioni che costruiscono la classe***/
  45. this.inizializzaMenu();
  46. }
  47.  
  48.  
  49.  
  50. this.inizializzaMenu=function inizializzaMenu() {
  51.  
  52. //se il click e' attivato ed e' il primo elemento, all'inzializzazione del menu,
  53. //evidenzio il primo tab
  54.  
  55. //con position specifico, l'elemento che deve essere attivato
  56.  
  57. var elementoEvidenziato=0; //di default l'elemento evidenzato e' il primo
  58. if (this.position) {
  59. elementoEvidenziato=this.position;
  60. }
  61.  
  62.  
  63. varGlobMenu=eval(this.menu_id+'varGlob=new Array()');
  64. //creo una variabile globale che ha come nome
  65. //il nome del menu, e contiene la posizione dell'elemento evidenziato
  66.  
  67. //se il menu non necessita mouse over la variabile globale e' settata a 'no'
  68.  
  69. varGlobMenu[0]=this.position; //posizione iniziale
  70. varGlobMenu[1]='no'; //elemento evidenziato
  71. varGlobMenu[2]='no'; //gruppo di default
  72.  
  73. if (this.attivaOver) {
  74.  
  75. varGlobMenu[1]=this.position;
  76.  
  77.  
  78. if (this.defaultGroup) {
  79. varGlobMenu[2]=this.defaultGroup;
  80. }
  81.  
  82.  
  83. }
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90. ancore=document.getElementById(this.menu_id).getElementsByTagName('a');
  91. lunAncore=ancore.length;
  92.  
  93.  
  94. for (var n=0;n<lunAncore;n++) {
  95.  
  96. /***gestione mouse over e mouse out ***/
  97.  
  98.  
  99.  
  100. if ( (this.attivaClick)&&(n==elementoEvidenziato) ) {
  101. ancore.item(elementoEvidenziato).onmouseover=null;
  102. ancore.item(elementoEvidenziato).onmouseout=null;
  103. separaGruppi(ancore.item(elementoEvidenziato).id); //evidenzia il gruppo corrispondente al tab
  104.  
  105. if(ancore.item(elementoEvidenziato).className.indexOf('_over')==-1) { //se l'elemento e' instato mouse out, lo coloro
  106. cambiaOver(ancore.item(elementoEvidenziato));
  107. }
  108. }
  109.  
  110. else { //se non c'e' il click e si tratta degli altri elementi
  111. //variabile per vedere se c'e' da attivare il mouse over
  112.  
  113. if ( ( ( (this.attivaClick)&&(this.attivaOver) )&& ( (ancore.item(n).id!='') ) || ( (ancore.item(n).id=='')&&(varGlobMenu[2]!='no') ) ) ) { //se c'e' da visualizzare gli elementi al mous eover
  114. ancore.item(n).onmouseover=tabClick;
  115. }
  116. else {
  117. a=ancore.item(n).onmouseover;
  118.  
  119. ancore.item(n).onmouseover=tabOver;
  120.  
  121. }
  122.  
  123. ancore.item(n).onmouseout=tabOut;
  124. }
  125. /***gestione click ***/
  126.  
  127. if(this.attivaClick) {
  128. ancore.item(n).onclick=tabClick;
  129.  
  130. }
  131.  
  132.  
  133. }
  134.  
  135.  
  136.  
  137. function tabOver(e){
  138.  
  139. var el=individuaOggetto(e); //el e' elemento che ha fatto partire l'evento
  140. //la funzione individuaOggetto(e) e' etserna a questa classe
  141. cambiaOver(el);
  142. }
  143. function cambiaOver(el) {
  144. if ( (el.previousSibling!=null)&&(el.previousSibling.tagName.toLowerCase()=='span') &&(el.className.indexOf('_over')==-1) ) {
  145. el.className=el.className+'_over';
  146. el.previousSibling.className=el.previousSibling.className+'_over';
  147. el.nextSibling.className=el.nextSibling.className+'_over';
  148. }
  149. else if (el.id.indexOf('_over')==-1) {
  150. el.id=el.id+'_over';
  151. }
  152. }
  153. function tabOut(e) {
  154. var el=individuaOggetto(e); //el e' elemento che ha fatto partire l'evento
  155. cambiaOut(el);
  156. }
  157. function cambiaOut(el) {
  158. if ( (el.previousSibling!=null) &&(el.previousSibling.tagName.toLowerCase()=='span') &&(el.className.indexOf('_over')>0) ) { //se e' un menu con tab di tre elementi..
  159. el.className=el.className.replace('_over','');
  160. el.previousSibling.className=el.previousSibling.className.replace('_over','');
  161. el.nextSibling.className=el.nextSibling.className.replace('_over','');
  162.  
  163. }
  164.  
  165.  
  166. else if (el.id.indexOf('_over')>0) { //se e' un menu con tab img...
  167. el.id=el.id.replace('_over','');
  168. }
  169.  
  170.  
  171.  
  172. }
  173.  
  174.  
  175. function controllaClick(e,el,id_menu) {
  176. if (!e) var e = window.event;
  177. var varGlobMenu=eval(id_menu+'varGlob');
  178. /*
  179. Questa parte disabilita' l'over in caso di click. Non necessaria qui.
  180.  
  181. if(e.type=='click') {
  182. eval(id_menu+"varGlob='no';");
  183. }
  184.  
  185. */
  186. //else if(el.id!=''){
  187.  
  188. // || ((el.id=='')&&(varGlobMenu[2]!='no'))
  189. if ( (varGlobMenu[1]!='no') && (el.id!='') ){
  190. var anch=document.getElementById(id_menu).getElementsByTagName('a');
  191. var lunAnch=anch.length;
  192. for (var m=0;m<lunAnch;m++) {
  193. if (anch.item(m).id==el.id) {
  194. varGlobMenu[1]=m;
  195.  
  196. }
  197. }
  198.  
  199. }
  200.  
  201.  
  202.  
  203. }
  204.  
  205. function tabClick(e) {
  206.  
  207. var el=individuaOggetto(e); //el e' elemento che ha fatto partire l'evento
  208.  
  209. controllaClick(e,el,el.parentNode.parentNode.id);
  210. var varGlobMenu=eval(el.parentNode.parentNode.id+'varGlob');
  211.  
  212. //rimuovo mouse over e mouse out dall'elemento:
  213. el.onmouseover=null;
  214. el.onmouseout=null;
  215. cambiaOver(el);
  216. //la struttura del documento e' UL > LI > A -- noi siamo nell'A
  217.  
  218. var ancore=document.getElementById(el.parentNode.parentNode.id).getElementsByTagName('a');
  219. var lunAncore=ancore.length;
  220.  
  221. for (var n=0;n<lunAncore;n++) {
  222. if(ancore.item(n)!=el) {
  223. //riassegno gli eventi agli altri elementi
  224.  
  225. cambiaOut(ancore.item(n)); //riassegno lo stato mout
  226.  
  227. if ( ((varGlobMenu[1]!='no')&& ( (ancore.item(n).id!='') ) || ( (ancore.item(n).id=='' &&varGlobMenu[2]!='no') ) ) ) { //controllo che la visualizzazione dei contenuti all'over
  228. //non sia disabilitata e che l'id dell'elemento non sia vuoto
  229. ancore.item(n).onmouseover=tabClick;
  230. }
  231. else {
  232. ancore.item(n).onmouseover=tabOver;
  233. }
  234. ancore.item(n).onmouseout=tabOut;
  235. }
  236. /*
  237. else if ( (el.id=='') && (varGlobMenu[2]!='no') ) {
  238. ancore.item(n).onmouseout=function(){
  239. cambiaOut(el);
  240. cambiaOver(ancore.item(varGlobMenu[0]) );
  241. if (ancore.item(varGlobMenu[0]).id!='') {
  242. separaGruppi(ancore.item(varGlobMenu[0]).id);
  243. }
  244. else if(varGlob[2]!='no') {
  245. separaGruppi(varGlobMenu[2]);
  246. }
  247. }
  248. }*/
  249. }
  250. var elemento='';
  251. if(el.id.indexOf('_over')>0) { //se l'id dell'elmento contiene '_over'.
  252. //non puo' succedere per il cambio di classe
  253. //ma puo' succedere pe ril cambio di ID.
  254. //Quindi questo controllo e' utile per la classe MenuID
  255. //che erdita da questa.
  256.  
  257. elemento=el.id.replace('_over','');
  258. }
  259.  
  260. else if (el.id==''&&varGlobMenu[2]!='no') {
  261. elemento=varGlobMenu[2];
  262. }
  263.  
  264. else elemento=el.id;
  265. return separaGruppi(elemento); //funzione che verifica se ci sono da visualizzare dei contenuti
  266.  
  267. }
  268.  
  269.  
  270. }
  271.  
  272.  
  273. this.Menu(); //lancio il costruttore
  274.  
  275.  
  276. }
  277.  
  278.  
  279.  
  280.  
  281.  
  282. /**************************** funzione per la gestione dei gruppi **************/
  283.  
  284. function separaGruppi(el_id) {
  285. if (el_id!=null) { //se e' settato l'elemento id
  286.  
  287. var temp=(el_id).split('||'); //se all'interno dell'id c'e' || --> i gruppi da ricaricare sono 2 alla volta
  288. var tempL=temp.length;
  289.  
  290. for (var n=0;n<tempL;n++) {
  291.  
  292. var ritorno=visualizzaContent(temp[n]);
  293. if (n==tempL-1) { // se e' l'ultimo elemento dell'id
  294. return ritorno; // restituisco il valore
  295. }
  296. }
  297. }
  298. else return true; //se non e' settato l'ID si prosegue con il link
  299. }
  300. function visualizzaContent(el_id) {
  301. //la funzione deve restituire true o false
  302. //true fa proseguire il link; false ferma il link
  303. /*** se e' settato l'ID faccio partire le funzioni che cambiano il blocco ***/
  304. if (el_id.indexOf('-')>0) { //se e' settato l'id e se contiene il trattino
  305. var temp=(el_id).split('-'); //ricavo due parti con: gruppo-blocco
  306.  
  307. //gruppo e' un oggetto quindi va trasformato da stringa a oggetto
  308.  
  309. var gruppo=eval(temp[0]);
  310. var blocco=temp[1];
  311.  
  312. if (gruppo) { //se l'oggetto gruppo e' stato creato, rimando al link statico
  313. gruppo.mostraBlocco(blocco); // visualizzo il blocco e fermo il link
  314. return false;
  315. }
  316.  
  317. else { //se l'oggetto gruppo non e' stato creato proseguo con il link statico
  318. return true;
  319.  
  320. }
  321.  
  322. }
  323.  
  324.  
  325. }
  326.  
  327.  
  328.  
  329. /***************************** funzione che precarica tutte le imgs *****************/
  330.  
  331.  
  332. function preloadImgs(args) {
  333. for(var n=0;n<arguments.length;n++) {
  334. preloadImg(arguments[n]);
  335. }
  336.  
  337. //funzione che precarica un immagine
  338. function preloadImg(percorso) {
  339. var temp=new Image();
  340. temp.src=percorso;
  341. }
  342.  
  343. }
  344.  
  345.  
  346. /***************************** funzione per la visualizzazione blocchi *****************/
  347.  
  348.  
  349.  
  350. function Gruppo(args) {
  351.  
  352.  
  353. this.blocchi=Gruppo.arguments; //assegno all'array "blocchi" i valori passati
  354. this.lunBlocchi=this.blocchi.length; // conto quanti blocchi sono
  355. this.bloccoEsiste=function bloccoEsiste(blocco) {
  356. //verifico che il blocco faccia parte del gruppo
  357. //restituisce true se il blocco eiste, false se non esiste
  358. var esiste=false;
  359. for (var n=0;n<this.lunBlocchi;n++) {
  360. if (blocco==this.blocchi[n]) {
  361. esiste=true;
  362. break;
  363. }
  364. }
  365. return esiste;
  366. }
  367. this.mostraBlocco=function mostraBlocco(blocco) {
  368. if(this.bloccoEsiste(blocco)==false) {
  369. void(0); //se il blocco non esiste non fare niente
  370. }
  371. else {
  372. for (var n=0;n<this.lunBlocchi;n++) {
  373. if (blocco==this.blocchi[n]){
  374. document.getElementById(this.blocchi[n]).style.display='block';
  375. }
  376. else {
  377. document.getElementById(this.blocchi[n]).style.display='none';
  378. }
  379. }
  380. }
  381. }
  382. }
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.