JavaScript 中的 if 语句,用于从选择输入中获取值

If Statement in JavaScript for Getting Value from Select Input

本文关键字:输入 选择 获取 用于 中的 if 语句 JavaScript      更新时间:2023-12-02

我遇到了这个问题。首先,这是代码:

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>

问题是,它只能选择第一个条件。如果我单击其他选项,结果仍然是第一个条件。例如:如果我选择/单击"A"或"B"或其他一个,结果始终是第一个条件。但是如果我只是传递 select 的值,它是有效的,但当我给出它 IF 语句时就不行了。

我只是从本教程中查看有关在 w3schools 中使用 IF 语句的信息,如果 JavaScript 使用的是"="而不是"==":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 子句必须返回boolean值,赋值不返回。

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

这在此堆栈溢出答案中广泛介绍

您使用的是单个=您需要使用相等的==