Javascript: işlev tanımlanmamış hata mesajı

Bu basit örnek kod, 3 metin kutusu var. İlk ikisine sayı yazarsam, bunları çarpar ve sonucu üçüne yazar. Bununla birlikte, kodu çalıştırırsam, şunu söyleyen bir hata alıyorum: "ReferenceError: calc tanımlı değil". Bir şey mi eksik?

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script language="text/javascript">
    function calc()
    {
        var txt1 = (float) document.getElementById('text1').value;
        var txt2 = (float) document.getElementById('text2').value;
        document.getElementById('text3').value = (txt1 * txt2);
    }
 </script>
</head>
<body>
    <table>
        <tr>
            <td><input type="text" id="text1" name="text1"></td>
            <td><input type="text" id="text2" name="text2" onkeypress="calc();"></td>
            <td><input type="text" id="text3" name="text3"></td>
       </tr>
   </table>
</body>
</html>

Güncelleme: "(Yüzer)" soruna neden olduğunu kim yazdıysa haklıydı. Yardım için teşekkürler.

0

7 cevap

Yüzdürmek için parseFloat kullanmaya çalış

function calc()
{
    var txt1 = parseFloat(document.getElementById('text1').value);
    var txt2 = parseFloat(document.getElementById('text2').value);
    document.getElementById('text3').value = (txt1 * txt2);
}
3
katma

use this line <script language="javascript" type="text/javascript">

2
katma
Bu yardımcı olmaz ve dil özelliği kullanımdan kaldırılmıştır.
katma yazar Peter Herdenborg, kaynak

Ben soruna neden olan (yüzer) dökümüm.

2
katma
Tamam, neye ve nasıl sebep olur? Ayrıca nasıl çözülür?
katma yazar Roope Hakulinen, kaynak
Soruyla ilgili güncelleme yorumunu gördünüz mü? Bu yüzden aptalca aşağı oy için çok teşekkürler ...
katma yazar Andreas K, kaynak

try this Demo

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <script type="text/JavaScript">
    function calc()
    {
        var txt1 = document.getElementById('text1');
        var txt2 = document.getElementById('text2');
        document.getElementById('text3').value = (parseFloat(txt1.value) * parseFloat(txt2.value));
    }
 </script>
</head>
<body>
    <table>
        <tr>
            <td><input type="text" id="text1" name="text1" value=""></td>
            <td><input type="text" id="text2" name="text2"   value=""></td>
            <td><input type="text" id="text3" name="text3" onkeypress="calc()" value=""></td>
       </tr>
   </table>     
</body>    
</html>
1
katma
@ downvoter neden aşağı oy?
katma yazar Kishan, kaynak

Bu hatayı almanın nedeni, orada tanımladığınız fonksiyonun geçersiz olması, yani yüklenmemiş olmasıdır. Sorun (kayan nokta) ile yatıyor - JavaScript'te böyle bir yazı yazamazsınız.

ParseFloat() işlevini aşağıdaki gibi kullanın:

var txt1 = parseFloat(document.getElementById('text1').value);

Rajesh'in ayrıca değiştirmeniz gerektiği konusunda doğru olduğunu unutmayın

<script language="text/javascript">

için

<script type="text/javascript">

Tam, doğru komut dosyası aşağıdaki gibidir:

<script type="text/javascript">
    function calc()
    {
        var txt1 = parseFloat(document.getElementById('text1').value);
        var txt2 = parseFloat(document.getElementById('text2').value);
        document.getElementById('text3').value = (txt1 * txt2);
    }
 </script>
1
katma

1) Değişmeyi deneyin

<script language="text/javascript">

için

<script type="text/javascript">

If you would like için use the deprecated language attribute you could do:

<script language="Javascript">

Additionally, as others have already pointed out that için get a float from a string you can use parseFloat and pass the string as a parameter. Using (float) is often used in Java için convert from a numeric type such as double or int için float.

2) Değişmeyi deneyin

var txt1 = (float) document.getElementById('text1').value;
var txt2 = (float) document.getElementById('text2').value;

için

var txt1 = parseFloat(document.getElementById('text1').value;
var txt2 = parseFloat(document.getElementById('text2').value;
0
katma
Yararlı bilgiler ancak aslında sorunu çözmez.
katma yazar Peter Herdenborg, kaynak
Harika, teşekkürler, bu daha iyi.
katma yazar Peter Herdenborg, kaynak
@Peter Herdenborg Güncellenmiş cevap.
katma yazar Moishe Lipsker, kaynak

Use parseFloat() instead of (float)

0
katma