Newsgroup: it.comp.lang.javascript
Titolo: creazione di moduli dinamici

Ho già postato ed ho ricevuto dei suggerimenti.
Purtroppo sono un neofita e non riesco a risolvere il mio problema che
irpropongo sperando in qualche anima buona che mi aiuti a creare uno script
In buona sostanza avrei bisogno di uno script che mi consenta di creare dei
moduli dinamici collegati tra loro.
Ho bisogno di creare due moduli nella stessa pagnia dove in uno devo
indicare un valore numerico
Una volta indicato tale valore; cliccando sul pulaante accanto denominato
"calcola" automaticamente nell'altro modulo viene indicato un valore
corrispondente
Il secondo modulo dovrebbe dare un risultato preso da un valore variabile
all'interno di un intervallo di valori del primo.
Per esempio
Primo modulo        Secondo modulo
1000                        50
1500                        50
2000                        100
2500                        120
e così via
Con excel riesco a farlo creando una cella nidificata con il seguente
valore:
=SE(A2<1100;"esente";SE(A2<5165,01;62;SE(A2<25823,01;155;SE(A2<51646,01;310;
SE(A2<258223,01;414;SE(A2<516457,01;672;930))))))
Tale formula è posta nella cella a3 e così mi da il risultato allorquando
attribuisco un valore nella cella a2
Vorrei redigere uno script per creare un modulo dinamico all'interno di una
pagina web.
Ringrazio tutti quelli che potranno aiutarmi.
Grazie

 all'interno di un intervallo di valori del primo.
[CUT]
Uno spunto:
http://www.criosoftware.it/sci.htm
-- 
"E' l' ignoranza che crea l'intolleranza
 di gente cieca e senza coscienza"
									  S.S.S.

Ti ringrazio per lo spunto.
Ho provato a modificare lo script aggiungendo un ulteriore textbox ma lo
script non funzione.
Elenco di seguito lo script modificato e vorrei sapere dove ho sbagliato.
Ho scritto anche alla tua e mail lo posto qui per il contributo che potrai
darmi.
Grazie
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Valore da Textbox a Textbox</title>
<script language="JavaScript">
<!--
function SymError()
{
  return true;
}
window.onerror = SymError;
var SymRealWinOpen = window.open;
function SymWinOpen(url, name, attributes)
{
  return (new Object());
}
window.open = SymWinOpen;
//-->
</script>
<script type="text/javascript">
 var
intervallo=[[1100.01,"Esente"],[5165.01,62],[25823.01,155],[51646.01,310],[2
58228.01,414],[516457.01,672]];
 function Calcola() {
  with(document.forms[0])
   for(var x=0;x<intervallo.length;x++)
    if(parseFloat(elements["d"].value)<intervallo[x][0]) {
  elements["r"].value=intervallo[x][1];
  return true;
 var
intervallo1=[[1100.01,"Esente"],[5165.01,31],[25823.01,77.50],[51646.01,155]
,[258228.01,207],[516457.01,336]];
 function Calcola() {
  with(document.forms[1])
   for(var x=0;x<intervallo1.length;x++)
    if(parseFloat(elements["d2"].value)<intervallo1[x][0]) {
  elements["r2"].value=intervallo1[x][1];
  return true;
 }
  //arrivato qua il valore è maggiore del valore più alto, non è specificato
cosa fare...
  document.forms[0].elements["r"].value="930";
  return false;
 }
</script>
</head>
<body>
<form action="#">
<input type="text" name="d" value="inserisci il valore"/><button
onclick="Calcola()">Calcola</button>
  <input type="text" name="r" readonly/>
  <input type="text" name="r2" readonly/>
  </br>
</form>
</body>
</html>
<script language="JavaScript">
<!--
var SymRealOnLoad;
var SymRealOnUnload;
function SymOnUnload()
{
  window.open = SymWinOpen;
  if(SymRealOnUnload != null)
     SymRealOnUnload();
}
function SymOnLoad()
{
  if(SymRealOnLoad != null)
     SymRealOnLoad();
  window.open = SymRealWinOpen;
  SymRealOnUnload = window.onunload;
  window.onunload = SymOnUnload;
}
SymRealOnLoad = window.onload;
window.onload = SymOnLoad;
//-->
</script>

   return true;
Qua c'è un return true; vuol dire che se trova il valore esce dalla
function e quindi non esegue tutto quello che c'è sotto...
Inoltre sei ancora dentro l'if (quindi se non trova un valore
corrispondente salterà a dopo la chiusura della graffa).
Potresti rimuovere il return true, chiudere la graffa e metterci un else,
così lo script va avanti:
 //return true;
 } else document.forms[0].elements["r"].value="930";
 //da qua riparti con la seconda parte (non devi quindi di nuovo mettere
function Calcol()).
Prova un po' e posta il risultato.
-- 
"That until there is no longer first class
And second class citizens of any nation
Until the colour of a man's skin
Is of no more significance than the colour of his eyes
Me say war"
B.M.

Ho provato con i suggerimenti ricevuti ma non ho ottenuto risultati.
Ho provato ad inserire una casella di spunta che mi consenta di dividere il
risultato della casella a metà ma non ottengo i risultati desiderati
Posto lo script. Dove ho commesso errore?
<script language="JavaScript">
<!--
function SymError()
{
  return true;
}
window.onerror = SymError;
var SymRealWinOpen = window.open;
function SymWinOpen(url, name, attributes)
{
  return (new Object());
}
window.open = SymWinOpen;
//-->
</script>
<script type="text/javascript">
 var
intervallo=[[1100.01,"Esente"],[5165.01,62],[25823.01,155],[51646.01,310],[2
58228.01,414],[516457.01,672]];
 function Calcola() {
  with(document.forms[0])
   for(var x=0;x<intervallo.length;x++)
    if(parseFloat(elements["d"].value)<intervallo[x][0]) {
  elements["r"].value=intervallo[x][1];
  return true;
 }
  //arrivato qua il valore è maggiore del valore più alto, non è specificato
cosa fare...
  document.forms[0].elements["r"].value="930";
  return false;
 }
</script>
</head>
<body>
<p>&nbsp;</p>
<form action="#">
<input type="text" name="d" value="inserisci il valore"/><button
onclick="Calcola()">Calcola</button>
  <input type="text" name="r" readonly/></br>
  <input name="checkbox" type="checkbox" onClick="value=intervallo[x][1]/2"
value="checkbox">
</form>

 value="checkbox">
Sai che non ho capito cosa vuoi ottenere? 
Vuoi onclick assegnare (a chi? Non penso alla checkbox) un valore preso
dall'array in posizione x (ma cos'è x?) diviso per 2?
-- 
"e mai che mi sia venuto in mente
 di essere più ubriaco di voi
 di essere molto più ubriaco di voi"
									  F.D.A.

 ha scritto nel messaggio
news:1dnxpr276h79p$.dlg@ID-147253.user.individual.net...


Ad integrazione del post che precede posto lo script.
Quello che vorrei ottenere è questo: cliccando sul bottone il valore che è
stato indicato nel box di calcolo del valore dovrebbe essere diviso a metà
<script language="JavaScript">
<!--
function SymError()
{
  return true;
}
window.onerror = SymError;
var SymRealWinOpen = window.open;

window.open = SymWinOpen;
//-->
</script>

  <input type="button" onClick="calcola() / 2)" value="calcola a
met&agrave;">
  <input type="reset"  value="Premere per nuovo calcolo">
</form>

 met&agrave;">
    <input name="RDiviso2"/>
-- 
"Emancipate yourselves from mental slavery;
None but ourselves can free our minds"
									    B.M.

Ho provato a correggere lo script nel senso indicato ma cliccando sul
bottone non accade nulla.
Ho provato anche a sostituire il type da button a checkbox perchè che
intendo ottenere con l'opzione spunta è la divisione a metà del risultato
ottenuto dal primo risultato ma non accade nulla.
Allora ho provato a creare un'altro form separato con i valori a metà ma
ottengo un risultato strano:
Per mostrare ciò che vorrei ottenere trascrivo la pagina che vorrei ottenere
visivamente.
________________                        _ _______________
|_15000_________|       Calcola      | 155____________|
_______________
|Calcola a metà___|
Orbene se io clicco sul Bottone Calcola il risultato che si ottiene è 155
Orbene se io clicco sul Bottone Calcola a metà nel box dove è scritto 155
deve comparire il valore 77.50
Analogamente dovrei ottenere il risultato di 77.50 anche se non clicco
dapprima sul bottone Calcola ma indicando il valore direttamente sul primo
box e cliccando sul bottone Calcola a metà dovrei ottenere il risultato di
77.50
Le ho provate tutte.
Ho provato ad inserire una funzione di divisione ma il risultato è stato che
viene bloccato tutto e non mi viene fuori alcun risultato.
Grazie per l'aiuto.

 Grazie per l'aiuto.
Beh, io ti ho dato lo spunto nel precedente post, se hai bisogno di
ulteriore aiuto dovresti postare *un estratto* della tua pagina il più
semplice possibile che simuli quello che hai fatto.
-- 
"Ti sei salvato
 o sei entrato in banca pure tu?"
									    A.V.

Ho verificato dove era l'errore.
Il termine parseFloat lo scrivevo tutto minuscolo e non veniva riconosciuto
come comando.
Il risultato va a finire in una diverso box, ma forse è meglio così.
Avrei preferito che utilizzando una casella di spunta allorquando veniva
cliccato sulla casella il valore si dimezzava nello stesso box.
Ma forse non è possibile ottenere ciò.
Tuttavia un altro problema è rimasto. Nel risultato i decimali sono indicati
ad una cifra mentre io vorrei che fossero due sempre.
Per esempio 77,50 in luogo di 77.5 perchè qualcuno potrebbe pensare che il 5
dopo il punto indichi 5 centesimi e  non già 50 come è logico che sia.
Ho provato ad inserire il comando
var decimali = 2
ma non saprei dove inserire il comando perchè venga rispettato.
Ho porovato ad inserirlo tar le variabil iniziali  ma il valore a metà mi
restituisce 2 decimali solo se il secondo decimale è superiore a 0
E' possibile ottenere un risultato che mi consenta di ottenere un valore ove
in ogni caso i decimali siano 2 anche quando il secondo decimale é 0?
Posto lo script
</script>
<script type="text/javascript">
 var
intervallo=[[1100.01,"Esente"],[5165.01,62],[25823.01,155],[51646.01,310],[2
58228.01,414],[516457.01,672]];
 var decimali=2;
 function Calcola() {
  with(document.forms[0])
   for(var x=0;x<intervallo.length;x++)
    if(parseFloat(elements["d"].value)<intervallo[x][0]) {
  elements["r"].value=intervallo[x][1];
  elements["rdiviso2"].value=parseFloat(elements["r"].value/2);
   return true;
 }
  //arrivato qua il valore è maggiore del valore più alto, non è specificato
cosa fare...
  document.forms[0].elements["r"].value="930";
  document.forms[0].elements["rdiviso2"].value="465"
  return false;
 }
</script>
</head>
<body>
<p>&nbsp;</p>
<form action="#">
<input type="text" name="d" value="inserisci il valore"/><button
onclick="Calcola()">Calcola</button>
 <br>
    <input type="text" name="r" readonly/></br>
  <input name="rdiviso2" readonly/>
  <p>
    <input type="reset"  value="Premere per nuovo calcolo">
  </p>
</form>

 ad una cifra mentre io vorrei che fossero due sempre.
Se ne è parlato diverse volte negli ultimi giorni, vedi soprattutto le
risposte di Zer0 che propongono un metodo già presente nelle ultime
versioni.
