Newsgroup: it.comp.lang.javascript
Titolo: PLEASE, HELP ME

Ho un problema che non riesco a risolvere sull'utilizzo dello <style> richiamato
da un Javascript.
Il codice utilizza le coordinate passate per creare rettangoli, al click del
mouse viene visualizzata un'informazione passata.
Tutto funziona correttamente, ma alla trentesima creazione si blocca con il fantomatico
messaggio "Argomento non valido".
Mi sembra sia il document.write('style'); che non funziona correttamente.
Per favore aiutatemi.
Messaggio spedito dal sito Risorse.net
La comunita' virtuale di Web masters e Web designers
http://www.risorse.net

SCUSATEMI MA IL PROBLEMA MI STA ......
Ho dimenticato di associare il seguente codice in oggetto (sono fuori ...):
<HTML>
<HEAD>
<script language="JavaScript1.2">
var n = (document.layers) ? 1:0;
var ie = (document.all) ? 1:0;
var objs = (n) ? "layers" : "all";
var style = (n) ? "" : "style.";
var layer=(n)?'layer':'div'
var num_rett= 1
var curr_selection = 0;
function show(text_num) {
	if (curr_selection != 0)
		eval('document.' + objs + '("ttip' + curr_selection + '").' + style + 'display
= "none"');
	eval('document.' + objs + '("ttip' + text_num + '").' + style + 'display = ""');
	curr_selection = text_num;
}
function hide(text_num) {
	document.all("ttip" + text_num).style.display = "none";
	curr_selection = 0;
}
function rectangle(x_pos, y_pos, altezza, larghezza, dato, colore, testo) {
  document.write('<style>');
  document.write(' #ttip' + num_rett +' {position:absolute; left:' + eval(x_pos
+ 10) + '; top:' + eval(y_pos + altezza - 5) + ';}');
  document.write(' #rett' + num_rett +' {position:absolute; left:' + x_pos +
'; top:' + y_pos + '; height:' + altezza + '; width:' + larghezza + ';}');
  document.write('</style>');
  /* rettangolo dato */
  document.write('<'+layer+' id="rett' + num_rett +'" OnClick="show(' + num_rett
+ ');">');
  document.write('<TABLE BGCOLOR=' + colore + ' ALIGN="center" BORDER="0" CELLPADDING="0"
CELLSPACING="0" HEIGHT="' + altezza + '" WIDTH="' + larghezza + '">');
  document.write('<TR ALIGN="center" VALIGN="middle"><TD>' + dato + '</TD></TR>');
  document.write('</TABLE>');
  document.write('</'+layer+'>');
  /* rettangolo tooltip */
  document.write('<'+layer+' id="ttip' + num_rett +'" OnClick="hide(' + num_rett
+ ');" >');
  document.write('<TABLE BGCOLOR=papayawhip ALIGN="center" BORDER="0" CELLPADDING="0"
CELLSPACING="0">');
  document.write('<TR ALIGN="center" VALIGN="middle"><TD>' + testo + '</TD></TR>');
  document.write('</TABLE>');
  document.write('</'+layer+'>');
  eval('document.' + objs + '("ttip' + num_rett + '").' + style + 'display =
"none"');
  num_rett+=1;
}
</script>
</HEAD>
<BODY bgcolor="white" >
<script language="JavaScript1.2">
x=10;
y=20;
j=50;
z=60;
idx=0;
while (idx!=40){
	a=x;
	b=y;
	c=j;
	d=z;
	rectangle(x, y, j,z,'prova', 'blue', 'Milano');
	x=x+2;
	y=y+2;
	j=j+2;
	z=z+2;
 
	idx=idx+1;
}
</script>
</body>
</HTML>
Scusatemi ancora e aiutatemi se potete si blocca alla creazione del trentesimo!!!!
rettangolo.
Grazie


 
Prova questo: è lo script nell'HEAD
<script language="JavaScript1.2">
var n = document.layers ? 1:0;
var ie = document.all ? 1:0;
var objs = (n) ? "layers" : "all";
var style = (n) ? "" : "style.";
var layer=(n)?'layer':'div'
var num_rett= 1
var curr_selection = 0;
function show(text_num) {
	if (curr_selection != 0)
		eval('document.' + objs + '"ttip' + curr_selection + '".' + 
style + 'display= "none"');
	eval('document.' + objs + '.ttip' + text_num + '.' + style + 
'display = ""');
	curr_selection = text_num;
}
function hide(text_num) {
	document.all("ttip" + text_num).style.display = "none";
	curr_selection = 0;
}
function rectangle(x_pos, y_pos, altezza, larghezza, dato, colore, 
testo) {
  document.write('<style>');
  document.write(' #ttip' + num_rett +' {position:absolute; left:' + 
eval(x_pos+ 10) + '; top:' + eval(y_pos + altezza - 5) + ';}');
  document.write(' #rett' + num_rett +' {position:absolute; left:' + 
x_pos +'; top:' + y_pos + '; height:' + altezza + '; width:' + larghezza 
+ ';}');
  document.write('</style>');
  /* rettangolo dato */
  document.write('<'+layer+' id="rett' + num_rett +'" OnClick="show(' + 
num_rett+ ');">');
  document.write('<TABLE BGCOLOR=' + colore + ' ALIGN="center" 
BORDER="0" CELLPADDING="0" CELLSPACING="0" HEIGHT="' + altezza + '" 
WIDTH="' + larghezza + '">');
  document.write('<TR ALIGN="center" VALIGN="middle"><TD>' + dato + 
idx+'</TD></TR>');
  document.write('</TABLE>');
  document.write('</'+layer+'>');
  /* rettangolo tooltip */
  document.write('<'+layer+' id="ttip' + num_rett +'" OnClick="hide(' + 
num_rett+ ');" >');
  document.write('<TABLE BGCOLOR=papayawhip ALIGN="center" BORDER="0" 
CELLPADDING="0" CELLSPACING="0">');
  document.write('<TR ALIGN="center" VALIGN="middle"><TD>' + testo + 
idx+'</TD></TR>');
  document.write('</TABLE>');
  document.write('</'+layer+'>');
  eval('document.' + objs + '.ttip' + num_rett + '.' + style + 'display 
="none"');
  num_rett+=1;
}
</script>
Ho tolto le parentesi ed i doppi apici dalla riga "eval..." ed aggiunto 
il punto.
-- 
Ciao, Riccardo
------------------------------------------------------------------------
WebMaster: ----> 
http://www.jsdir.com
 <---- (aka 
http://www.jspoint.it
)
              All the JavaScript you need
------------------------------------------------------------------------
               Nessun traguardo è abbastanza lontano.
------------------------------------------------------------------------

...):>> >>Prova questo: č lo script nell'HEAD><script language="JavaScript1.2">>var

              Nessun traguardo č abbastanza lontano.>------------------------------------------------------------------------
Non riesco a far funzionare il codice in oggetto, mi puoi su che macchina ha
funzionato.
Ti allego un'esempio piů piccolo del problema in oggetto.
Ti ringrazio per la pazienza e il tempo dedicatomi.
<HTML>
<HEAD>
<script language="JavaScript1.2">
var n = (document.layers) ? 1:0;
var ie = (document.all) ? 1:0;
var layer=(n)?'layer':'div'
var num_rett=1
function rectangle(x_pos, y_pos, altezza, larghezza) {
  var bordo=0;
  var testo="";
  var colore= "red";
 
  document.write('<style>');
  document.write('#rett' + num_rett +' {position:absolute; left:' + x_pos + ';
top:' + y_pos + '; height:' + altezza + '; width:' + larghezza + '; color:#FFFFFF;}');
  document.write('</style>');
  altezza-=(bordo) ; larghezza-=bordo;
  document.write('<'+layer+' id="#rett' + num_rett +'">');
  document.write('<TABLE BGCOLOR=' + colore + ' ALIGN="center" BORDER="1" CELLPADDING="0"
CELLSPACING="0" HEIGHT="' + altezza + '" WIDTH="' + larghezza + '">');
  document.write('<TR ALIGN="center" VALIGN="middle"><TD>' + testo + '</TD></TR>');
  document.write('</TABLE>');
  document.write('</'+layer+'>');
  num_rett+=1;
}
</script>
</HEAD>
<BODY bgcolor="white" >
<script language="JavaScript1.2">
x=10;
y=20;
j=50;
z=60;
idx=0;
while (idx!=100){
	a=x;
	b=y;
	c=j;
	d=z;
	rectangle(x, y, j, z);
	x=x+2;
	y=y+2;
	j=j+2;
	z=z+2;
 
	idx=idx+1;
}
</script>
</body>
</HTML>
Voglio solo costruire dei rettangoli con le coordinate passate.
NB: mi sembra perň che il limite di IE 5.5 nella visualizzazione dei tag sia
32.
Mi puoi confermare o sono informazioni non corrette.
Ciao di nuovo


Il 17 Sep 2001 17:38:14 +0200, Frankmed ha scritto.....

L'avevo provato con Netscape.
In effetti IE si blocca proprio, sia nella vecchia versione, che in quella che 
hai mandato ieri.
Hai provato a scrivere direttamente dei <DIV> con lo STYLE dentro?
p.s.
Che te ne pare del quothing?
Come vedi č difficile capirsi.
