为什么我可以't获取在select中定义的选项的value属性的值

Why I can't obtain the value of the value attribute of the option defined into a select?

本文关键字:定义 选项 value 属性 select 我可以 获取 为什么      更新时间:2023-09-26

我对JavaScript和jQuery很陌生,在尝试检索与select的所选选项相关的值时遇到了以下问题。

因此,在我的页面中,我有:

<select id="selAttivitaSelezionata" class="form-control valid" name="selAttivita" aria-invalid="false">
    <option value="valida">Valida Progetto</option>
    <option value="invalida">Rimuovi Validazione</option>
</select>

然后我有下面的jQuery代码,每当用户在上一次选择中选择一个选项时都会执行:

$("#selAttivitaSelezionata").change(function() {
    //alert("TIPOLOGIA PROGETTO CAMBIATA");
                    
    var sel = $("#selAttivitaSelezionata");
    var val = sel.value;
    alert(val);
                    
    $("#statoProgettoLabel").hide();
    $("#selStatoProgetto").hide();
});

因此,正如您首先看到的那样,我选择DOM中id为"的select对象;selAttivitaSelezionata",然后我尝试通过sel.value获得所选值,然后我将其打印到弹出的警报中

问题是警报为空。使用FireBug调试器,我看到sel变量被正确初始化,但val的变量是未定义的,是sel获得的值。value

为什么?我错过了什么?如何获取值属性的值(valida或invalida)?

因为你有这个:

var sel = $('#selAttivitaSelezionata');

这使得sel成为一个jQuery对象。

此:

var val = sel.value;

应该是这样的:

var val = sel.val();

As.val()是用于检索值的jQuery方法。

你可以通过使用$(this):来做得更好

$("#selAttivitaSelezionata").change(function() {
    var val = $(this).val();
    $("#statoProgettoLabel, #selStatoProgetto").hide();
});

以下是您要查找的内容:

var val = sel.val();

以下是jQuery文档的参考资料http://api.jquery.com/val/

您不需要两个元素,只需将其中一个元素与.val()jQuery函数一起使用即可。

工作示例

$("#selAttivitaSelezionata").change(function() {
  var val = $(this).val();
  console.log(val);
  $("#statoProgettoLabel").hide();
  $("#selStatoProgetto").hide();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="selAttivitaSelezionata" class="form-control valid" name="selAttivita" aria-invalid="false">
  <option value="valida">Valida Progetto</option>
  <option value="invalida">Rimuovi Validazione</option>
</select>

  • .val()-jQuery API文档

sel是jQuery对象,不能在它上使用Javascript方法。

对其使用val()来获取值。

sel.val();

如果你想使用Javascript方法,

var sel = $("#selAttivitaSelezionata")[0];
var val = sel.value;

不要在"change"处理程序中再次查询DOM;jQuery为您提供了对元素(this的值)的引用:

$("#selAttivitaSelezionata").change(function() {
  var sel = $(this);
  var val = sel.val();
  // ...
});