Javascript 如何获取select元素的值以及如何对更改采取行动?

Javascript 如何获取select元素的值以及如何对更改采取行动?,javascript,jquery,select,onchange,Javascript,Jquery,Select,Onchange,在以下方面存在问题: 出于某种原因,上面的代码没有调用“total”函数。html代码是: <select name="cmm"> <option value="none">none</option> <option value="one">the first</option> <option value="two">the second</option> </s

在以下方面存在问题:

出于某种原因,上面的代码没有调用“total”函数。html代码是:

  <select name="cmm">
      <option value="none">none</option>
      <option value="one">the first</option>
      <option value="two">the second</option>
  </select>
(是的,我一直在使用docready)

更新问题:
确保您的代码正在
文档中运行。ready
处理程序使
元素位于DOM中并已就绪,如下所示:

$(function() {
  $("select[name=cmm]").change(function(){ total(); });
});
var iets = $("select[name=cmm]").val();
//or when calling .change(total) like above, inside total you can use:
var iets = $(this).val();
<script type='text/javascript'>//<![CDATA[
    $(document).ready(function() {
      $("select[name=cm]").change(function(){
        total();
      });

      function total() {
        alert("works?");
      }
    }
</script>
//]]></script>

<select name="cm">
  <option value="none">none</option>
  <option value="one">the first</option>
  <option value="two">the second</option>
</select>
<select name="cm">
  <option value="none">none</option>
  <option value="one">the first</option>
  <option value="two">the second</option>
</select>


<script type='text/javascript'>//<![CDATA[
    $("select[name=cm]").change(function(){
        total();
    });

    function total() {
        alert("works?");
    }
</script>
//]]></script>

对于前面的问题:
您缺少选择器上的第二个
m
,它应该是:

$("select[name=cmm]").change(function(){ total(); });
或更短:

$("select[name=cmm]").change(total);
对于第二种情况,只需直接在
上使用即可获得值,如下所示:

$(function() {
  $("select[name=cmm]").change(function(){ total(); });
});
var iets = $("select[name=cmm]").val();
//or when calling .change(total) like above, inside total you can use:
var iets = $(this).val();
<script type='text/javascript'>//<![CDATA[
    $(document).ready(function() {
      $("select[name=cm]").change(function(){
        total();
      });

      function total() {
        alert("works?");
      }
    }
</script>
//]]></script>

<select name="cm">
  <option value="none">none</option>
  <option value="one">the first</option>
  <option value="two">the second</option>
</select>
<select name="cm">
  <option value="none">none</option>
  <option value="one">the first</option>
  <option value="two">the second</option>
</select>


<script type='text/javascript'>//<![CDATA[
    $("select[name=cm]").change(function(){
        total();
    });

    function total() {
        alert("works?");
    }
</script>
//]]></script>

当您指定
选项时,无论选择了什么,它都会获取第一个
的值。

我假设这不是
cm
cmm
的问题,您可能过早地分配了
onChange
处理程序,这意味着DOM尚未初始化

<script type='text/javascript'>//<![CDATA[
    // if your javaScript is initialized before the actual
    // select element liek this, it will not work
    $("select[name=cm]").change(function(){
        total();
    });

    function total() {
        alert("works?");
    }
</script>
//]]></script>

<select name="cm">
  <option value="none">none</option>
  <option value="one">the first</option>
  <option value="two">the second</option>
</select>
//
//]]>
没有一个
第一
第二
您的javaScript应该在DOM就绪后执行,因此您必须使用jQuery的document.ready事件,如下所示:

$(function() {
  $("select[name=cmm]").change(function(){ total(); });
});
var iets = $("select[name=cmm]").val();
//or when calling .change(total) like above, inside total you can use:
var iets = $(this).val();
<script type='text/javascript'>//<![CDATA[
    $(document).ready(function() {
      $("select[name=cm]").change(function(){
        total();
      });

      function total() {
        alert("works?");
      }
    }
</script>
//]]></script>

<select name="cm">
  <option value="none">none</option>
  <option value="one">the first</option>
  <option value="two">the second</option>
</select>
<select name="cm">
  <option value="none">none</option>
  <option value="one">the first</option>
  <option value="two">the second</option>
</select>


<script type='text/javascript'>//<![CDATA[
    $("select[name=cm]").change(function(){
        total();
    });

    function total() {
        alert("works?");
    }
</script>
//]]></script>
//
//]]>
没有一个
第一
第二
或者将其放在相关元素之后,如下所示:

$(function() {
  $("select[name=cmm]").change(function(){ total(); });
});
var iets = $("select[name=cmm]").val();
//or when calling .change(total) like above, inside total you can use:
var iets = $(this).val();
<script type='text/javascript'>//<![CDATA[
    $(document).ready(function() {
      $("select[name=cm]").change(function(){
        total();
      });

      function total() {
        alert("works?");
      }
    }
</script>
//]]></script>

<select name="cm">
  <option value="none">none</option>
  <option value="one">the first</option>
  <option value="two">the second</option>
</select>
<select name="cm">
  <option value="none">none</option>
  <option value="one">the first</option>
  <option value="two">the second</option>
</select>


<script type='text/javascript'>//<![CDATA[
    $("select[name=cm]").change(function(){
        total();
    });

    function total() {
        alert("works?");
    }
</script>
//]]></script>

没有一个
第一
第二
//
//]]>

我遇到了这个问题,因为我使用了一个插件来设置select元素的样式。 我的问题(onchange函数不起作用)的解决方案如下:

嘿,对不起,我的代码中没有输入错误,一定是在这里复制时出错了。Als短符号方法正在为我破坏其他JS代码(我正在使用一个插件来设置选择菜单的样式)@Sled-如果你在问问题时更改代码,你可能会遇到更多错误,如上面的错误,请确保你的代码匹配。如果上述操作不起作用,是否在
document.ready
处理程序中运行?您的
是通过ajax动态添加的吗?是的,很抱歉,代码太多了。它被打破了,因为偏执狂在总功能上缺失了$(“选择[名称=坐标测量机]”)。更改(总计);不过,它是这样工作的:$(“选择[name=cmm]”)。更改(total());------但是它并没有被及时调用,我想是因为total在一个div中显示结果,结果只有在我“更改”影响结果的其他元素(两个滑块)时才会更改,所以值存储在“iets”中,但没有更改。我说的两个滑块也调用total函数,它们都在工作,它只在“选择”时被破坏element@Sled-当您使用内部的
total()
调用它时,它会立即执行,而不是更改,请尝试执行
alert($(“选择[name=cmm]”).length)在同一点上,结果是什么?嘿,我在使用$(document).ready()它一定是其他东西。谢谢你!