Autor Zpráva
BedyR
Profil
Moderátor Str4wberry: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
Nemohl by jste někdo poradit jak se v javascriptu řeší substituce proměných.
Jako příklad využití uvávím toto :
<script>
function kontrola(p){
   if (p > 10.9) {p = 10.9;} 
   if (p < 0) {p = 0;}  
   po = Math.round(p*10)/10; 
   return po;
}
function test(){ 
document.forms.polozky.Edit001.value = kontrola(document.forms.polozky.Edit001.value);
. . .
document.forms.polozky.Edit0100.value = p100;
document.forms.polozky.suma.value = p1+p2+p3 . . .+p98+p99+p100;
}
</script>

<input  name="Edit001"  type="text"   value="10.3"  tabindex=1  onblur="test();" />

v PHP bych řešil tento problém, abych nemusel vypisovat všech sto řádků, cyklem se substitucí proměných:

$cyklu = 100 ;
$po = $p = $souc = 0;
echo '<form name="polozky" method="post" action="./index.php" target="_self">';
for ($x=1; $x<($cyklu+1);$x++){
   $y = str_pad($x, 3, "0", STR_PAD_LEFT);  ;
   $p = ${"_POST['Edit".$y."']"}; 
   if ($p > 10.9) {$p = 10.9;} 
   if ($p < 0)     {$p = 0;}  
   $po = Math.round($p*10)/10; 
   $souc += $po;
   echo '<input  name="Edit'.$y.'" type="text" value="'.$po.'" tabindex='.$x.'  />';
}
echo    '<input  name="suma" type="text" value="'.$souc.'" tabindex=0 readonly="readonly" />';
echo "</form>";

samozdřejmně zde pro jednoduchost neřeším CSS style, jde mi hlavně o to zda je možno problém obdobně řešit v javascriptu protože v php bych mohl operaci provést až po
odeslání submit tlačítkem. Díky.
Str4wberry
Profil
Ehm, co je cílem udělat?

Aha, ten postup v PHP je takový, jak to říct, nestandardní. Obvykle se takové podobné položky formuláře odesílají jako pole a nějaké skládání názvů proměnných není potřeba. V JavaScriptu si můžeš projít cyklem kolekci document.forms.polozky, tedy také nic skládat nepotřebuješ.
BedyR
Profil
Str4wberry:
Předem se musím omluvit, že tam mám pár nedostatků :
v Javascriptu :
function test(){ 
   p = new array();
   p[0] = kontrola(document.forms.polozky.Edit001.value);
   document.forms.polozky.Edit001.value = p[0];
   . . .
   p[99] = kontrola(document.forms.polozky.Edit100.value);
   document.forms.polozky.Edit0100.value = p[99];
   for (x=0;x<p.length;x++){ document.forms.polozky.suma.value += p[x]; }
}  
PHP :
   $po = round($p,1);
Ale mně šlo o základní princip tohle byl jen příklad.
Takže se zeptám jak bych zapsal v javascriptu toto z PHP :
  $a = 5;
  $b = "a";
  $c = ${$b};
  echo $c;
Děkuji
Str4wberry
Profil
Třeba:
var a = 5;
var b = "a";
var c = window[b];
document.write(c);
Nebo takhle:
eval("var c = " + b);
Ale je vcelku nesmyslné něco takového vytvářet, když ti stačí použít číslo indexu.
BedyR
Profil
Str4wberry:
Díky moc.

P.S.
Název té proměné se generuje na základě dvou různých proměných načítaných v cyklu.
Takže nemají posloupnost.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: