JavaScript 中的 If 语句用于从 Select 输入中获取值

If Statement in JavaScript for Getting Value from Select Input

我被这个问题困住了。首先,这是代码:

JavaScript

function PilihKeterangan(isi)
{
    if (isi = 'A') {
        $('#keterangan').val("Sangat Baik : sangat aktif mengikuti latihan dan kegiatan ...");
    } else if (isi = "B") {
        $('#keterangan').val("Baik : aktif mengikuti latihan dan kegiatan ...");
    } else if (isi = 'C') {
        $('#keterangan').val("Cukup : cukup aktif mengikuti latihan dan kegiatan Kepramukaan ..."); 
    } else if (isi = 'X') {
        $('#keterangan').val("Kegiatan ini tidak dipilih oleh siswa / bukan menjadi pilihan siswa");
    } else {
        $('#keterangan').val("Pilihlah predikat A/B/C/X.");
    }

} 

HTML

<select class="form-control" name="PREDIKAT_EKSTRA_UTS" onchange="PilihKeterangan(this.value)">
    <option selected value="">- Pilih -</option>
    <option value="A">A</option>
    <option value="B">B</option>
    <option value="C">C</option>
    <option value="X">X</option>
</select>

问题是,它只能满足select第一个条件。如果我点击其他选项,结果仍然是第一个条件。在示例中:如果 i select/click 'A' 或 'B' 或者 one 结果始终是第一个条件。 但是如果我只是传递 select 的值,它是有效的,但当我给它 IF 语句时就不行了。

如果 JavaScript 使用“=”而不是“==”,我只是从本教程中了解如何在 w3schools 中使用 IF 语句: http://www.w3schools.com/js/js_if_else.asp

希望有回复。 谢谢:)

这不是 if 语句的语法

你应该这样做:

if(isi == 'A'){
    // your code
}

这称为比较运算符:“==”

您正在使用单个 = 您需要使用一个 == 来获得相等性

如 hitesh upadhyay 和 Oliver 所述,您应该使用相等运算符 == 而不是赋值运算符 =.

考虑在这种情况下使用 switch 来生成更简洁的代码。

function PilihKeterangan(isi)
{
    var msg = "";
    switch(isi){
        case 'A':
            msg = "Sangat Baik : sangat aktif mengikuti latihan dan kegiatan ...";
        break;
        case 'B':
            msg = "Baik : aktif mengikuti latihan dan kegiatan ...";
        break;
        case 'C':
            msg = "Cukup : cukup aktif mengikuti latihan dan kegiatan Kepramukaan ...");
        break;
        case 'X':
            msg = "Kegiatan ini tidak dipilih oleh siswa / bukan menjadi pilihan siswa";
        break;
        default:
            msg = "Pilihlah predikat A/B/C/X.";
        break;
    }
    $('#keterangan').val(msg);
}

这是因为您使用的是赋值运算符 (=) 而不是相等运算符 (==),我通常建议使用恒等运算符 (===) .

if 子句必须 return 一个 boolean 值,赋值则不需要。

标识 (===) 运算符的行为与相等 (==) 运算符的行为相同,只是没有进行类型转换,并且类型必须相同才能被视为相等。

this Stack Overflow answer

对此进行了广泛介绍