diilers Ierakstīts Marts 20, 2013 Share Ierakstīts Marts 20, 2013 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 More sharing options...
usver Marts 20, 2013 Share Marts 20, 2013 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 More sharing options...
diilers Marts 20, 2013 Author Share Marts 20, 2013 (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 Marts 20, 2013 - diilers Link to comment Share on other sites More sharing options...
usver Marts 20, 2013 Share Marts 20, 2013 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 More sharing options...
diilers Marts 20, 2013 Author Share Marts 20, 2013 (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 Marts 20, 2013 - diilers Link to comment Share on other sites More sharing options...
usver Marts 21, 2013 Share Marts 21, 2013 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 More sharing options...
diilers Marts 22, 2013 Author Share Marts 22, 2013 (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 Marts 22, 2013 - diilers Link to comment Share on other sites More sharing options...
Vilx- Marts 22, 2013 Share Marts 22, 2013 (labots) Nafig čakarēties ar tiem ID? Dari šitā: http://jsfiddle.net/xsrUn/2/ Labots Marts 22, 2013 - Vilx- Link to comment Share on other sites More sharing options...
diilers Marts 24, 2013 Author Share Marts 24, 2013 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 More sharing options...
Vilx- Marts 24, 2013 Share Marts 24, 2013 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 More sharing options...
girts2 Marts 24, 2013 Share Marts 24, 2013 Tiem, kas uzskata, ka augstāk minētie piemēri ir slikts stils: http://jsfiddle.net/v5Ueb/ Minimāli modificēts http://knockoutjs.com/examples/gridEditor.html Link to comment Share on other sites More sharing options...
Recommended Posts
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 kontuPierakstīties
Jums jau ir konts? Pierakstieties tajā šeit!
Pierakstīties tagad!