Jump to content

skanēt dinamiskus javascript laukus


diilers
 Share

Recommended Posts

Labdien,

Veidojot nelielu datubāzi saskāros ar vienu šķērsli, kuru nevaru pārvarēt...

 

Lieta ir tāda, ka man ir tabula, kuras rindu skaits var tikt papildināts ar javscript pogu.

var cell4 = row.insertCell(3);
var element4 = document.createElement("input");
element4.type = "text";
element4.name="cena[]";
cell4.appendChild(element4);

 

šādi skatās mana rindiņas viena "celle", kuru es vēlos dinamiski skanēt, lai ievadot -cenu-, automātiski summas laukā parādītos summa, kā arī ievadot nākamo cenu tā tiek pievienota summai ...... 

īsāk sakot man vajag summas scriptu, kuru nekādi nevaru izdomāt....

 

Lūdzu palīdziet. :)

Link to comment
Share on other sites

viens variants: ar skaitītājiem. inputu vadīt ar cena[0] , cena[1] .. 

 

for(var i=0 ; i < cena.length /* vai cena.size() ? nepārbaudīju */ ; i++) { .. } 

 

 

otrais variants, smukāks un elegantāks: 

 

element4.style.classname = "cenulauks"; 

 

un kad vajag summu: 

 

 

var cenulauki = getElementsByClassName("cenulauks");

 

un tad apstaigāt visus laukus; tas būtu elegantāk un mazāk čakarīgi.

 

 

sintakse nav pārbaudīta, bet pirms dažiem gadiem tā arī darīju praksē.

Link to comment
Share on other sites

diilers
(labots)

un tad apstaigāt visus laukus; tas būtu elegantāk un mazāk čakarīgi.

 

Paldies par labu risinājumu, bet, kad es iegūtstu summu nevaru viņu bez pogas izvadīt uzreiz summas laukā

 

function xxx(){
	var cenulauki = getElementsByClassName("cenulauks");
	var daudzumi = getElementsByClassName("daudzums");
	var summas = getElementsByClassName("summa");
	lenght = cenulauki.lenght;
	var sum = 0;
	for (var i = 0; i < lenght; i++){
		sum = cenulauki[i] * daudzumi[i];
		summas[i].value = sum;
	}
}
 

Izveidoju funkciju, varbūt kāds var panamīt kādas kļūdas es šeit pieļauju :)

Labots - diilers
Link to comment
Share on other sites

ja vajag lai nostrādā automātiski summēšanas funkcija, tad uzliec visiem laukiem, kurus rediģēsi, onBlur() funkcijā xxx izsaukumu. Nevajadzēs papildus pogas skaitīšanai.



var arī onChange() laukiem - kādā rediģēšanas funkcijā, lai saucas automātiski. tur try{ } catch vajadzēs, lai ignorētu "23." tipa nepabeigto rediģēšanu.

 

Ja nekādi eksepšeni nenostrādā, tad updeito summas lauku ar rezultātu.

Link to comment
Share on other sites

diilers
(labots)

onBlur()

Šo frāzi tieši arī meklēju, bet man kaut kas nesanāk ...

Es optimizēju savu kodu līdz minimumam un ieliku  ----- >  http://jsfiddle.net/V82Bd/12/ --- > vēlamais rezultāts ievadot dadzumu un cenu automātiski aprēķinās in ievadās summas lauks :)

 

Paldies iepriekš par palīdzību. ;)

Ceru, ka neesu galīti uzkritis usveram uz nerviem (giggle)

Labots - diilers
Link to comment
Share on other sites

Tev vispār kaut kas no tā koda ir darbojies?

 

jsfiddle piemērā:

 

lenght = cenulauki.lenght;

nestrādās, JO 1) mainīgais jādefinē ar var priekšā 2) lengTH ir propertijs. nokārsies jebkurā gadījumā.

 

 

sum = cenulauki[i] * daudzumi[i];
summas[i].value = sum;

Pirmajā rindiņā inputus kā tādus nesanāks sasummēt. Otrajā rindiņā viss korekti.

 

 

 

Un elementi smuki atlasās, ja pilda 

document.getElementsByClassName("klasesnosaukums");

Kad šo ieviesīsi un sāksi lietot alert() lai noskaidrotu, vai rindiņa veiksmīgi izpildījusies, tad sanāks autoaprēķini. kad ieviesīsi try/catch, tad vispār.

 

kā dinamiski pievienotajiem elementiem pievienot eventu pats pagūglē - savulaik bija pārlūk-specifiski risinājumi.



plus vēl object.classname vajag lietot lai klasi setotu. nu to visu precizēt sagūglējot jau sen varēja.

Link to comment
Share on other sites

diilers
(labots)

Labi es piestrādāju pie šī koda un beigu beigās nonācu pie secinājuma, ka ar jquery viss ir vieglāk sasniedzams -> 

Strādā funkcija daudzums * cena un parādās summas laukā, tomēr tas strādā tikai uz DOM -> html lapā ievietotajiem laukiem

 

http://jsfiddle.net/vDtcd/

 

ja es scriptā nomainu 1 uz 2:

 

var x=document.getElementById("daudz1"); ----> 2
var y=document.getElementById("cena1"); -----> 2
var z=document.getElementById("sum1"); ------> 2
tad šī automātika strādā pareizi, bet tikai pēc tam, kad esmu kaut ko(jeb ko) ierakstijis pirmajos laukos :)
 
Ir kāds padoms/risinājums?
 
 
 
UPDATE: 
Varbūt varat man iemācīt kā uzlikt pareizi -->"currentId" uz iezīmētās rinas (tr) id :)
Labots - diilers
Link to comment
Share on other sites

diilers

Wohoo .... milzīgs paldies Vilx-.

Esmu iesācējs jacascriptā un jau gandrīz biju nolēmis šo visu darīt iekš PHP, tomēr šādas lietas domāju labāk atstāt klienta datoram rēķināt :)

Link to comment
Share on other sites

Tikai atceries - nekad nevar paļauties uz datiem, kas nāk no klienta. Hakeris tos var elementāri pārrakstīt ar kādām vien vērtībām grib. Tāpēc šīs summas noteikti sarēķini vēlreiz servera (PHP) pusē.

Link to comment
Share on other sites

Izveido kontu, vai pieraksties esošajā, lai komentētu

Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas

Izveidot jaunu kontu

Piereģistrējies un izveido jaunu kontu, tas būs viegli!

Reģistrēt jaunu kontu

Pierakstīties

Jums jau ir konts? Pierakstieties tajā šeit!

Pierakstīties tagad!
 Share

×
×
  • Izveidot jaunu...