Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

Çoklu inputları değişkenlere göre toplama

Konu, 'Javascript' kısmında Arshimet tarafından paylaşıldı.

Etiketler:
  1. Arshimet

    Arshimet Aktif Üye

    Kayıt:
    16 Mayıs 2006
    Mesajlar:
    256
    Beğenilen Mesajlar:
    0
    Merhaba.
    Örnek vererek konuyu açmak istiyorum.
    HTML:
    <table align="center">
    <tr>
            <td>Adı<input name="adi" type="text" value="Taş" /></td>
            <td>fiyat<input name="fiyat" type="text" value="5" /></td>
           
    </tr>
    
    <tr>
            <td>Adı<input name="adi" type="text" value="Kağıt" /></td>
            <td>fiyat<input name="fiyat" type="text" value="5" /></td>
           
    </tr>
    <tr>
            <td>Adı<input name="adi" type="text" value="Makas" /></td>
            <td>fiyat<input name="fiyat" type="text" value="5" /></td>
           
    </tr>
    <tr>
            <td>Adı<input name="adi" type="text" value="Makas" /></td>
            <td>fiyat<input name="fiyat" type="text" value="5" /></td>
           
    </tr>
    <tr>
            <td>Adı<input name="adi" type="text" value="Taş" /></td>
            <td>fiyat<input name="fiyat" type="text" value="5" /></td>
           
    </tr>
    <tr>
            <td>Adı<input name="adi" type="text" value="Kağıt" /></td>
            <td>fiyat<input name="fiyat" type="text" value="5" /></td>
           
    </tr>
    <tr>
            <td>Adı<input name="adi" type="text" value="Makas" /></td>
            <td>fiyat<input name="fiyat" type="text" value="5" /></td>
           
    </tr>
    <tr>
            <td>Adı<input name="adi" type="text" value="Taş" /></td>
            <td>fiyat<input name="fiyat" type="text" value="5" /></td>
           
    </tr>
    <tr>
            <td>Adı<input name="adi" type="text" value="Makas" /></td>
            <td>fiyat<input name="fiyat" type="text" value="5" /></td>
           
    </tr>
    <tr>
            <td>Adı<input name="adi" type="text" value="Taş" /></td>
            <td>fiyat<input name="fiyat" type="text" value="5" /></td>
           
    </tr>
    
    
    
    </table>
    
    
    
    Bu alanda gördüğüz gibi sayfamın bir köşesine Taş,Makas,Kağıt yazan input değerlerini toplayıp yazmasını istiyorum. inputlar değişken, yani 1000 lerce olabilir.

    Diyelim valuesi taş olan 3 tane var ve fiyat kısmını alıp 5+3=8 demeli. Taş valuesinin toplam fiyatı 8 TL olduğunu yazmasını istiyorum.

    bunu javascript ile nasıl yapabilirim.

    Değerli bilgileriniz için şimdiden teşekkür ederim.
     
  2. Luciin

    Luciin Aktif Üye

    Kayıt:
    19 Temmuz 2011
    Mesajlar:
    276
    Beğenilen Mesajlar:
    1
    Meslek:
    Webmaster
    Şehir:
    Adana
    Yapmak istediğin bir siparis dökümü mü? Şöyle yapabilirsin:

    HTML:
    <table align="center">
    <tr>
            <td>Adı<input name="adi" type="text" value="Taş" /></td>
            <td>fiyat<input name="fiyat" type="text" value="5" /></td>
          
    </tr>
    
    <tr>
            <td>Adı<input name="adi" type="text" value="Kağıt" /></td>
            <td>fiyat<input name="fiyat" type="text" value="5" /></td>
          
    </tr>
    <tr>
            <td>Adı<input name="adi" type="text" value="Makas" /></td>
            <td>fiyat<input name="fiyat" type="text" value="5" /></td>
          
    </tr>
    <tr>
            <td>Adı<input name="adi" type="text" value="Makas" /></td>
            <td>fiyat<input name="fiyat" type="text" value="5" /></td>
          
    </tr>
    <tr>
            <td>Adı<input name="adi" type="text" value="Taş" /></td>
            <td>fiyat<input name="fiyat" type="text" value="5" /></td>
          
    </tr>
    <tr>
            <td>Adı<input name="adi" type="text" value="Kağıt" /></td>
            <td>fiyat<input name="fiyat" type="text" value="5" /></td>
          
    </tr>
    <tr>
            <td>Adı<input name="adi" type="text" value="Makas" /></td>
            <td>fiyat<input name="fiyat" type="text" value="5" /></td>
          
    </tr>
    <tr>
            <td>Adı<input name="adi" type="text" value="Taş" /></td>
            <td>fiyat<input name="fiyat" type="text" value="5" /></td>
          
    </tr>
    <tr>
            <td>Adı<input name="adi" type="text" value="Makas" /></td>
            <td>fiyat<input name="fiyat" type="text" value="5" /></td>
          
    </tr>
    <tr>
            <td>Adı<input name="adi" type="text" value="Taş" /></td>
            <td>fiyat<input name="fiyat" type="text" value="5" /></td>
          
    </tr>
    
    <tr><td colspan="2" id="sonucAlani">&nbsp;</td></tr>
    
    </table>
    
    
    
    <script>
    
    
    
    function hesapla(){
        var cesit=[],alinan=[],fiyati=[]
        // Ürün çeşitleri
      
        siparis=document.getElementsByName("adi")
      
        for (urun=0; urun<=siparis.length-1; urun++){
            urunAdi=siparis[urun].value
          
            Var=0
          
            for (cesitSay=0; cesitSay<=cesit.length-1; cesitSay++){
                if(cesit[cesitSay]==urunAdi){
                    Var=1
                    alinan[urunAdi]=alinan[urunAdi]+1
                    }
                }
          
            if (Var==0){
                cesit.push(urunAdi)
                alinan[urunAdi]=1
                fiyati[urunAdi]=document.getElementsByName("fiyat")[urun].value
                }
            }
      
      
        sonuc=""
      
        for(urun=0; urun<=cesit.length-1;urun++){
            f1=parseFloat(alinan[cesit[urun]])
            f2=parseFloat(fiyati[cesit[urun]])
            sonuc+=f1+" adet "+cesit[urun]+" = "+f1+" x "+f2+" = "+(f1*f2)+" TL<br>"
            }
      
        document.getElementById("sonucAlani").innerHTML=sonuc
      
        }
    
    hesapla()
    
    </script>
    Eğer bir sipariş dökümüyse anlamadığım neden adet sayısına göre çarpma değil de toplama işlemi yaptığın... Belki amacını daha açık anlatmalısın... (Ama her türlü üstte verdiğim kodlara göz at) Üstteki verdiğin değerlere göre şu çıktıyı verecek:

    4 adet Taş = 4 x 5 = 20 TL
    2 adet Kağıt = 2 x 5 = 10 TL
    4 adet Makas = 4 x 5 = 20 TL