|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Nov 2000
Città: prov. Olbia-Tempio; Trattative concluse: ne ho perso da tempo il conto
Messaggi: 6868
|
[Javascript] Parametrizzare <td width con variabili Javascript
<table><td width=1024>..... eccetera
invece di mettere un valore numerico per width, vorrei mettere una variabile da settare in base alla risoluzione per esempio definire la variabile dimX <script type="javascript"> var dimX = screen.width >= 1152? (90*screen.width)/100 : (85*screen.width)/100; </script> per poi inserirla nel tag html <table><tr><td width=dimX>..... eccetera il punto critico è proprio questo... con quale sintassi si inserisce nel tag html? ho trovato %dimX;& ma non funziona... |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Sep 2005
Città: Vicenza
Messaggi: 3949
|
dovresti usare un approccio del genere:
http://jsfiddle.net/F3f3u/ o, sempre nello stesso modo, usando jquery
__________________
CASE Haf X MOBO Asrock Extreme4 CPU i5 2500K cooled By Thermalright Archon VGA Sapphire 6950 2GB RAM G.Skill Ripjaws-X F3 4GB 1333mhz PSU Enermax 500W modu 87+ HDD C300 64GB - f3 1TB - AAKS 500GB MONITOR Dell U2311H | Trattative completate |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Nov 2010
Città: Londra
Messaggi: 620
|
http://jsfiddle.net/JmD8h/1/
Nell'html ti basta inserire delle classi o degli id per poter facilmente scegliere quegli elementi con jQuery. HTML: Codice:
<table id="tab1">
<tr>
<td class="colonna">
...
</td>
<td>
...
</td>
</tr>
</table>
Codice:
var dimX = screen.width >= 1152? (90*screen.width)/100 : (85*screen.width)/100;
$("#tab1").width(dimX);
$(".colonna").width(250);
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2000
Città: prov. Olbia-Tempio; Trattative concluse: ne ho perso da tempo il conto
Messaggi: 6868
|
chiedo scusa... ho usato i suggerimenti datimi e solo in parte hanno funzionato... dal momento che sono veramente alle prime armi con javascript e jQuery e quindi...
il frammento di codice usato è ------------------------------------------------------------------ <style type=text/css> <script type=text/javascript> var dimX = screen.width >= 1024? (90*(screen.width))/100 : 1100; $("#tab1").width(dimX); $("#tab2").width(dimX); </script> </style> </head> <body background="img/sfondo.gif" bgcolor=green> <table id="tab1" align="center" bgcolor="green" border="1"> <tr bgcolor="#990000"> <td width="23"></td> <td align=center bgcolor="#990000" border=0><b><font size="5" color=yellow> Le Reazioni Inorganiche: Formazione di Sali Ternari da un metallo e un non-Metallo </font></td> <td width="23"></td> </tr> <tr bgcolor="#990000"> <td width="23"></td> <td align=center bgcolor="#990000"><font color=white size=6> Formazione del sale ternario <font color=yellow>Clorito di Bario (<font color=white>Ba(ClO<sub>2</sub>)<sub>2</sub></font>)</font></font>. </font></td> <td width="23"></td> </tr> </table> <table id="tab2" cellspacing=0 cellpadding=0 frame="box" align="center" border="3"> ........................... eccetera --------------------------------------------------------------------- la prima tabella, con id=tab1 non viene ridimensionata dal codice, ma si vede che le width sono unicamente determinati dal testo scritto dentro... la seconda invece si... perchè? |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Nov 2010
Città: Londra
Messaggi: 620
|
1- non mettere <style ...> e all'interno <script>, sono due cose diverse.
nell'head metti lo style Codice:
<head> ... <style> ... </style> </head> <body> ... <script> ... </script> </body> magari posta anche l'html della seconda tabella o se hai altri script, css o quant'altro. con il solo codice che hai postato funziona. 3- per favore metti il codice nel suo bbcode [ code] cosi si legge più facilmente |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Nov 2000
Città: prov. Olbia-Tempio; Trattative concluse: ne ho perso da tempo il conto
Messaggi: 6868
|
Codice:
<body background="img/sfondo.gif" bgcolor=green>
<script type=text/javascript>
var dimX = screen.width >= 1024? (90*(screen.width))/100 : 1100;
$("#tab1").width(dimX);
$("#tab2").width(dimX);
</script>
<table id="tab1" align="center" bgcolor="green" border="1">
<tr bgcolor="#990000">
<td width="23"></td>
<td align=center bgcolor="#990000" border=0><b><font size="5" color=yellow> Le Reazioni Inorganiche: Formazione di Sali Ternari da un metallo e un non-Metallo
</font></td>
<td width="23"></td>
</tr>
<tr bgcolor="#990000">
<td width="23"></td>
<td align=center bgcolor="#990000"><font color=white size=6> Formazione del sale ternario <font color=yellow>Clorito di Bario (<font color=white>Ba(ClO<sub>2</sub>)<sub>2</sub></font>)</font></font>.
</font></td>
<td width="23"></td>
</tr>
</table>
la seconda tabella, qui non ho riportato il codice, va bene... è la id=tab1 che continua a non essere influenzata dallo script... Ho innestato lo script e il foglio di stile perchè c'era una parte del css che doveva essere controllato con un if a seconda del tipo di browser, cioè così... Codice:
................................................
<style type=text/css>
<script type=text/javascript>
body
{
margin: 10px 0px 0px 0px;
}
#FOOTER
{
position: fixed;
bottom: 0px;
width: 100%;
text-align: center;
background-color: #ffffff;
border-top: 1px solid #000000;
}
if (navigator.appName =="Microsoft Internet Explorer")
{
html #FOOTER
{
position: absolute;
top: expression((0-(FOOTER.offsetHeight)+(document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight)+(ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop))+'px');
}
}
</script>
</style>
</head>
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Nov 2000
Città: prov. Olbia-Tempio; Trattative concluse: ne ho perso da tempo il conto
Messaggi: 6868
|
questo un esempio completo...
Codice:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
"http://www.w3.org/TR/REC-html40/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<script type=text/javascript>
var dimX = screen.width >= 1024? (90*(screen.width))/100 : 1100;
$(".tab").width(dimX);
function VisualizzaFile(nomefile, format)
{
finestra = window.open (nomefile,'pag',format);
finestra.resizeTo(650, 730);
finestra.focus();
}
</script>
</head>
<body background="img/sfondo.gif" bgcolor=green>
<table class="tab" align="center" bgcolor="green" border="1">
<tr bgcolor="#990000">
<td width="23"></td>
<td align=center bgcolor="#990000" border=0><b><font size="5" color=yellow> Le Reazioni Inorganiche: Formazione di Sali Ternari da un metallo e un non-Metallo
</font></td>
<td width="23"></td>
</tr>
<tr bgcolor="#990000">
<td width="23"></td>
<td align=center bgcolor="#990000"><font color=white size=6> Formazione del sale ternario <font color=yellow>Clorito di Bario (<font color=white>Ba(ClO<sub>2</sub>)<sub>2</sub></font>)</font></font>.
</font></td>
<td width="23"></td>
</tr>
</table>
<table class="tab" cellspacing=0 cellpadding=0 frame="box" align="center" border="3">
<tbody>
<tr>
<td width="2"></td>
<td colspan=5>
<br>
<p> </font><dir><font color="black" size=5> Si vogliano
scrivere e bilanciare le reazioni necessarie per ottenere un sale
ternario, partendo da un metallo e da un non-metallo.
<br> Ammettiamo che il non-metallo sia <font color="brown"><b>Cloro cloroso (Cl<sup>+3</sup>)</b></font> e il metallo sia <b><font color="brown">Bario (Ba<sup>+2</sup>)</font></b>.</p>
</td><td width=2></td>
</tr>
<tr><td colspan=7><hr color=green size=3></td></tr>
<tr>
<td width="2"></td>
<td>
<dir><font color="black" size=5> <br><p>L'esercizio va svolto facendo riferimento allo
<p align=center><font size=6><a href="javascript:VisualizzaIMG('img/compound.gif', 'left=450, top=475, width=580, height=400')"> schema generale delle reazioni</a></font></p>
che conducono alla formazione del sale ternario, partendo da metallo e non metallo;<br><br>
<ul>
<li>il metallo dà, per reazione con Ossigeno, l'ossido: nel caso in esame
<font color=brown>Ossido di Bario</font>;<br>
<li>l'ossido di Bario ottenuto vien fatto reagire con acqua, ottenendosi l'<font color=brown>Idrossido di Bario</font>;
<li>analogamente il non metallo dà, per reazione con Ossigeno, l'anidride;<br>nel caso in esame
<font color=brown>Anidride Clorosa</font>;
<li>l'Anidride Clorosa ottenuta forma, fatta reagire con acqua, l'<font color=brown>Acido Cloroso</font>;
<li>infine il sale, vale a dire il <font color=brown>Clorito di Bario</font> si sintetizza per reazione diretta tra idrossido e ossiacido.
</ul>
<td width="2"></td>
</tr></table>
</body>
</html>
confermo che la prima tabella non è influenzata dal codice |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Nov 2010
Città: Londra
Messaggi: 620
|
Ti mancava la libreria jQuery.
Inoltre non usare screen.width ma window.width, perchè screen è l'intero schermo, window è invece la finestra del browser. Gli script di questo tipo che vanno a interagire con il DOM salvo casi particolari si mettono generalmente alla fine prima della chiusura del body. Codice PHP:
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Nov 2000
Città: prov. Olbia-Tempio; Trattative concluse: ne ho perso da tempo il conto
Messaggi: 6868
|
Errore...
Ultima modifica di cos1950 : 28-08-2013 alle 11:52. Motivo: errore |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Nov 2000
Città: prov. Olbia-Tempio; Trattative concluse: ne ho perso da tempo il conto
Messaggi: 6868
|
Codice:
<script type="text/javascript">
<!---
function createCookie(name,value) {
document.cookie = name+"="+value;
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
loads()
{
var StopPopup="nopopup";
if ( readCookie(StopPopUp) == null )
{
window.open('alert.htm', 'pag', 'left=100, top=120, width=600, height=500, resizable=0, scrollbars=0');
createCookie(StopPopUp,"ok");
}
}
loads();
//-->
</script>
non sono in grado di capire che c'è che non va... chiamata alla funzione loads() parte quando il browser arriva al fondo del documento? In pratica, se ho capito la dinamica, dovrebbe essere memorizzato un cookie chiamato elenco cookies .......... ......... nopopup=ok; ........ alla lettura viene trovata la stringa "nopopup=" che, se presente, indica che la pagina è stata già visualizzata... oppure non c'è ed è la prima visualizzazione... |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Nov 2010
Città: Londra
Messaggi: 620
|
Non capisco cosa sia la funzione load().
Per fare quel che chiedi basta questo, ti ho commentato il codice: Codice HTML:
<body> ...contenuto... <script src="http://codeorigin.jquery.com/jquery-1.10.2.min.js"></script> <script type="text/javascript"> var dimX = window.width >= 1024 ? (90 * (window.width)) / 100 : 1100; $(".tab").width(dimX); // dichiari la funzione che crea il cookie, a cui passi due valori: il nome del cookie e il valore che gli vuoi assegnare. NB: la stai solo dichiarando non viene eseguita ancora. function createCookie(name, value) { document.cookie = name + "=" + value; } // idem come prima stai dichiarando la funzione che legge, o meglio verifica se c'è un cookie. // se non c'è cookie ritorna il valore null, se c'è il cookie ritorna il valore 'value' che avevi passato prima // in realtà basterebbe una funzione più corta perchè noi non abbiamo impostato altri parametri (data ed expire) però per comodità teniamo questa e ci risparmiamo il tempo. function readCookie(name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); for (var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) == ' ') c = c.substring(1, c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length); } return null; } // se il cookie non esiste la funzione readcookie ritorna 'null' quindi fai vedere il popup e imposti il cookie // se il cookie esiste esce non fa nulla, niente popup e niente creazione del cookie (che esiste già). if (readCookie(StopPopUp) == null) { // fai vedere il popup e impostalo window.open('alert.htm', 'pag', 'left=100, top=120, width=600, height=500, resizable=0, scrollbars=0'); // impostiamo il cookie così la prossima volta non lo fa più vedere. createCookie(StopPopUp, true); } </script> </body> </html> |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Nov 2000
Città: prov. Olbia-Tempio; Trattative concluse: ne ho perso da tempo il conto
Messaggi: 6868
|
Con questo codice:
Codice:
<script src="http://codeorigin.jquery.com/jquery-1.10.2.min.js"></script>
<script type="text/javascript">
var dimX = window.width >= 1024 ? (90 * (window.width)) / 100 : 1100;
$(".tab").width(dimX);
// dichiari la funzione che crea il cookie, a cui passi due valori: il nome del cookie e il valore che gli vuoi assegnare. NB: la stai solo dichiarando non viene eseguita ancora.
function createCookie(name, value) {
document.cookie = name + "=" + value;
document.write("<b><font size=10> Valore scritto: " + document.cookie +"</font>");
}
// idem come prima stai dichiarando la funzione che legge, o meglio verifica se c'è un cookie.
// se non c'è cookie ritorna il valore null, se c'è il cookie ritorna il valore 'value' che avevi passato prima
// in realtà basterebbe una funzione più corta perchè noi non abbiamo impostato altri parametri (data ed expire) però per comodità teniamo questa e ci risparmiamo il tempo.
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie;
document.write("<b><font size=10> Valore letto: " + ca +"</font>");
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') c = c.substring(1, c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
}
return null;
}
// se il cookie non esiste la funzione readcookie ritorna 'null' quindi fai vedere il popup e imposti il cookie
// se il cookie esiste esce non fa nulla, niente popup e niente creazione del cookie (che esiste già).
var miocookie = "StopPopUp";
var miovalue = "true";
if (readCookie(miocookie) == null) {
// fai vedere il popup e impostalo
f=window.open('alert.htm', 'pag', 'left=100, top=120, width=800, height=500, resizable=0, scrollbars=0');
// impostiamo il cookie così la prossima volta non lo fa più vedere.
createCookie(miocookie, miovalue);
f.focus();
}
</script>
</body></html>
ma il valore scritto è corretto... cioè "StopPopUp=true" gli faccio scrivere nel documento i valori per controllare, appunto... e quindi entra sempre nell'if e visualizza il popUp Sembrerebbe non trovi il cookie alla lettura... Perchè? |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Nov 2000
Città: prov. Olbia-Tempio; Trattative concluse: ne ho perso da tempo il conto
Messaggi: 6868
|
Domanda
quand'è che cancella il cookie? Non è che se non c'è una data di expire, lo cancella appena esce dalla pagina? |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Nov 2010
Città: Londra
Messaggi: 620
|
nel trovare il tuo errore ho visto dove ho sbagliato io, perdonami ma sto facendo mille cose in sti giorni e sono parecchio sbadato complice il fatto che non sto mai testando il codice
(non l'ho testato nemmeno stavolta Codice:
var miocookie = "StopPopUp"; Codice:
var miovalue = "true"; Codice:
var miocookie = "StopPopUp";
var miovalue = true;
if (readCookie(miocookie) == null) {
f=window.open('alert.htm', 'pag', 'left=100, top=120, width=800, height=500, resizable=0, scrollbars=0');
createCookie(miocookie, miovalue);
f.focus();
}
|
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Nov 2000
Città: prov. Olbia-Tempio; Trattative concluse: ne ho perso da tempo il conto
Messaggi: 6868
|
Trovata una variante delle funzioni createcookie() >>> setcookie() e readcookie() >>> getcookie()
quello che fanno le funzioni è più comprensibile... ma il popUp esce sempre e non viene disabilitato... pare che alla lettura non ci sia mai un cookie è evidente dalla riga indicata dalla freccia, nel codice allegato... quel document.write nin viene mai eseguito: Codice:
<script src="http://codeorigin.jquery.com/jquery-1.10.2.min.js"></script>
<script type="text/javascript">
var dimX = window.width >= 1024 ? (90 * (window.width)) / 100 : 1100;
$(".tab").width(dimX);
// dichiari la funzione che crea il cookie, a cui passi due valori: il nome del cookie e il valore che gli vuoi assegnare. NB: la stai solo dichiarando non viene eseguita ancora.
function setCookie(name, value) {
var n = name+"="+escape(value);
document.cookie = n;
document.write("<b><font size=10> Valore scritto: " + n +"</font>");
}
// idem come prima stai dichiarando la funzione che legge, o meglio verifica se c'è un cookie.
// se non c'è cookie ritorna il valore null, se c'è il cookie ritorna il valore 'value' che avevi passato prima
// in realtà basterebbe una funzione più corta perchè noi non abbiamo impostato altri parametri (data ed expire) però per comodità teniamo questa e ci risparmiamo il tempo.
function getCookie(name) {
var arg = name+"=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while (i < clen)
{
var j = i + alen;
document.write(document.cookie.substring(i, j)+"<br>"); <--=======--<<<< Questa non viene mai stampata...
if (document.cookie.substring(i, j) == arg) return 1;
}
return null;
}
// se il cookie non esiste la funzione readcookie ritorna 'null' quindi fai vedere il popup e imposti il cookie
// se il cookie esiste esce non fa nulla, niente popup e niente creazione del cookie (che esiste già).
var miocookie = "StopPopUp";
var miovalue = true;
if (getCookie(miocookie) == null) {
// fai vedere il popup e impostalo
f=window.open('alert.htm', 'pag', 'left=100, top=120, width=800, height=500, resizable=0, scrollbars=0');
// impostiamo il cookie così la prossima volta non lo fa più vedere.
setCookie(miocookie, miovalue);
f.focus();
}
</script>
</body></html>
|
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Nov 2010
Città: Londra
Messaggi: 620
|
Domani mattina te lo sistemo per bene con una demo così testo se funziona e la facciamo finita
Non continuare a cambiare però. Ci sarà solo da modificare l if e basta il resto è tutto giusto sono abbastanza certo |
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Nov 2000
Città: prov. Olbia-Tempio; Trattative concluse: ne ho perso da tempo il conto
Messaggi: 6868
|
Adesso funziona... nel while mancava l'incremento i++; del contatore
puoi verificare all'indirizzo in firma grazie Ultima modifica di cos1950 : 29-08-2013 alle 13:57. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:22.











(non l'ho testato nemmeno stavolta







