murathoca
murathoca

Reputation: 11

Why does this javascript not work in chrome while it does in ie?

It is a very simple calculation script and I don't know why it does not work in chrome. I'm so confused. A search here and the net for days did not work. I'm stuck.

Isyerindeki Çalisan Sayisi: <input type="text" name="n"> <button onclick="myFunction()">Hesapla</button>
<p id="sonucat"></p>
<p id="sonuct"></p>
<p id="sonucct"></p>
<script>
    function myFunction() {
        var a = Number(n.value);
        var at = 4
        var t = 6
        var ct = 8
        var sat = a * at;
        var st = a * t;
        var sct = a * ct;

        if (a <= 9) { 
            var sat = 25; 
            document.getElementById("sonucat").innerHTML = "AZ TEHLIKELI isyerlerinde yilda en az " + sat + ",";
            document.getElementById("sonuct").innerHTML = "TEHLIKELI isyerlerinde ayda en az " + st + ",";
            document.getElementById("sonucct").innerHTML = "ÇOK TEHLIKELI isyerlerinde ayda en az " + sct + " dakika isyeri hekimi çalistirmakla yükümlüsünüz.";
        }
        else {
            document.getElementById("sonucat").innerHTML = "AZ TEHLIKELI isyerlerinde ayda en az " + sat + ",";
            document.getElementById("sonuct").innerHTML = "TEHLIKELI isyerlerinde ayda en az " + st + ",";
            document.getElementById("sonucct").innerHTML = "ÇOK TEHLIKELI isyerlerinde ayda en az " + sct + " dakika isyeri hekimi çalistirmakla yükümlüsünüz.";
        }
    }
</script>

Upvotes: 0

Views: 57

Answers (2)

GillesC
GillesC

Reputation: 10874

It's because IE create variable based on the element name when Chrome does not so your n.value has no meaning for it.

So you need to select it, for example add an id="a" then use document.getElementById("a")

Your onclick is also wrong though, myFunction() would call the function when the DOM is read not on click, should be myFunction. Also best to stay away from attribute when it comes to binding.

function myFunction() {
    var a = Number(document.getElementyId("myId").value);
    var at = 4
    var t = 6
    var ct = 8
    var sat = a * at;
    var st = a * t;
    var sct = a * ct;

    if (a <= 9) { 
    var sat = 25; 
        document.getElementById("sonucat").innerHTML = "AZ TEHLİKELİ işyerlerinde yılda en az " + sat + ",";
        document.getElementById("sonuct").innerHTML = "TEHLİKELİ işyerlerinde ayda en az " + st + ",";
        document.getElementById("sonucct").innerHTML = "ÇOK TEHLİKELİ işyerlerinde ayda en az " + sct + " dakika işyeri hekimi çalıştırmakla yükümlüsünüz.";
    }
    else {
        document.getElementById("sonucat").innerHTML = "AZ TEHLİKELİ işyerlerinde ayda en az " + sat + ",";
        document.getElementById("sonuct").innerHTML = "TEHLİKELİ işyerlerinde ayda en az " + st + ",";
        document.getElementById("sonucct").innerHTML = "ÇOK TEHLİKELİ işyerlerinde ayda en az " + sct + " dakika işyeri hekimi çalıştırmakla yükümlüsünüz.";
    }
}

Upvotes: 2

Sjoerd de Wit
Sjoerd de Wit

Reputation: 2413

your declaring n.value wrong,

change these 2 lines

<input type="text" name="n">
var a = Number(n.value);

To these 2

<input type="text" name="n" id="n">

var n = document.getElementById('n');
var a = Number(n.value);

Upvotes: 1

Related Questions