将HTML下拉菜单值传递给JavaScript函数& onclick函数调用

时间:2014-04-03 18:00:13

标签: javascript html

我知道这个问题已经在几个方面被提出过,但它们没有帮助我,当我尝试调试时,我遇到了“未定义”的错误。

这很简单:我有一个HTML下拉菜单,上面有几个不同的公制单位,我给每个单位都有一个值。我想将选定的值传递给JavaScript函数,该函数将检查度量单位类型,然后将其转换为相应的英语单位。

下拉列表HTML:

e<p><span><label for="metric-unit">Select metric unit</label></span>
                    <select name="metric" id="metric">
                        <option value="cel">Celsius</option>
                        <option value="cm">Centimeters</option>
                        <option value="kg">Kilograms</option>
                        <option value="ml">Milliliters</option>
                    </select>
                </p>

我的JavaScript函数尝试传递值:

metricUnit = document.getElementById("metric").value;

我的第二个问题是调用转换函数。我想在选择公制单位后执行此操作,并在文本字段中输入一个数字,然后用户单击提交按钮。我应该使用或不使用参数调用函数,特别是如果我使用getElementById来获取公制单位的值和数字发生之前的数字?

是不是

onlick ="convertMeasure()"

onclick = "convertMeasure(metric, numVal)"

3 个答案:

答案 0 :(得分:0)

假设提交按钮和文本字段的ID分别为subtxt,并且您已经默认<option>喜欢&#34;请选择单位&#34;与value = 0

var button= document.getElementById("sub");
 button.onclick= function(){
   var select= document.getElementById("metric");
   metricUnit = select[select.selectedIndex].value; //value selected in select
   val = document.getElementById("txt").value; // value entered in text field
   if(metricUnit!=0 && !isNaN(val)){ // make sure selected item is not default and the text in textbox is a number
     convertMeasure(metricUnit, val); // call your function
   }
 }

答案 1 :(得分:0)

首先获取您的选择元素

var select = document.getElementById("metric");

然后您可以使用所选索引

读取选项中的值
var metric = select.options[select.selectedIndex].value;

至于如何调用convertMeasure()方法,如果你要动态获取多个元素的值,我会建议第一个。

这是一个与http://jsfiddle.net/zEncN/

一起玩的jsfiddle

答案 2 :(得分:0)

您似乎正在将点击绑定放在html中的某个位置,就像这样

<div onclick='callThisFunction()'> Click on this div </div>

然后在你的javascript中,你可以拥有该功能。在其中,您可以获取下拉列表的选定值,并执行您需要的任何逻辑。

<script>
   function callThisFunction() {
       var dropdown = document.getElementById("metric");
       var unit = dropdown.options[dropdown.selectedIndex].value;
       var nameOfUnit = dropdown.options[dropdown.selectedIndex].text;

       if (unit == "cm") {
           // do stuff
       } else if (unit == "ml") {
           // do stuff
       }
       // etc.
   }
</script>