Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript下拉菜单计算_Javascript_Options - Fatal编程技术网

Javascript下拉菜单计算

Javascript下拉菜单计算,javascript,options,Javascript,Options,我的代码有点问题。我正试图从下拉菜单中进行计算,然后它会变成一个文本框。我已经做了好几天了,试图找出它,并在谷歌上搜索编写函数的方法。有谁能帮助我或给我建议如何处理这个问题吗 function numGuest() { var a = document.getElementById("guests"); if(a.options[a.selectedIndex].value == "0") { registration.banq.value = "0";

我的代码有点问题。我正试图从下拉菜单中进行计算,然后它会变成一个文本框。我已经做了好几天了,试图找出它,并在谷歌上搜索编写函数的方法。有谁能帮助我或给我建议如何处理这个问题吗

function numGuest()
{
    var a = document.getElementById("guests");
    if(a.options[a.selectedIndex].value == "0")
    {
        registration.banq.value = "0";
    }
    else if(a.options[a.selectedIndex].value == "1")
    {
        registration.banq.value = "30";
    }
}

0
1.
2.
3.
4.
5.
为什么id=banq(文本字段)被禁用

要启用: document.getElementById('banq')。disabled=false

对于该值,请选择:

function numGuest(){
    var theGuestValForCalc = 0;
    var theFinalResult = 0;   

    theGuestValForCalc = document.getElementById('guests').options[document.getElementById('guests').selectedIndex].value;



    theFinalResult = theGuestValForCalc * 10 // or some value, calculation, etc.

    document.getElementById('banq').innerHTML = theFinalResult;

    // return theFinalResult;

}未定义注册。您需要以与guests元素相同的方式获取文本输入元素。此外,onChange侦听器应该附加到选择菜单,而不是文本区域

<html>
<script>
function numGuest()
{
    var banq = document.getElementById('banq');
    var a = document.getElementById("guests");

    if(a.options[a.selectedIndex].value == "0")
    {
        banq.value = "0";
    }
    else if(a.options[a.selectedIndex].value == "1")
    {
        banq.value = "1";
    }
}
</script>
<select id="guests" name="guests"  onChange="numGuest()" >
    <option value="0">0</option>
    <option value="1">1</option>
    <option>2</option>
    <option>3</option>
    <option>4</option>
    <option>5</option>
</select>

    <input type="text" id="banq" name="banq" disabled />
</html>

函数numGuest()
{
var banq=document.getElementById('banq');
var a=document.getElementById(“来宾”);
如果(a.options[a.selectedIndex].value==“0”)
{
banq.value=“0”;
}
else if(a.options[a.selectedIndex].value==“1”)
{
banq.value=“1”;
}
}
0
1.
2.
3.
4.
5.
在您的代码中:

> <input type="text" id="banq" name="banq" onChange="numGuest()" disabled />
  var form = element.form;
  var banq = form.banq;
  var a = form.guests; // or element
元素将是对其处理程序调用函数的元素的引用

由于您说过您的控件位于表单中,并且具有名称的表单控件是其所在表单的命名属性,因此您可以简化代码:

> <input type="text" id="banq" name="banq" onChange="numGuest()" disabled />
  var form = element.form;
  var banq = form.banq;
  var a = form.guests; // or element
如果选定选项具有值(请参见下面的注释),则可以直接使用select元素的value属性:

  if (a.value == "0") {
    banq.value = "0";

  } else if (a.value == "1") {
    banq.value = "1";
  }
你完成了

注:

  • 如果选项没有值属性或属性,则其值为文本内容。不幸的是,旧版本的IE不支持此功能,因此您必须使用
    select.options[select.selectedIndex].text
    。但是最好的办法是总是给选项一个值,这样你就可以得到select元素的值
  • 不需要给出表单控件的名称和ID。他们必须有名字才能成功,所以只要给他们名字,忘记id就行了

  • 什么是注册?什么是银行?当文本输入的值更改时,还是当下拉列表的值更改时,您希望运行
    numGuest
    函数?注册是表单id和名称,banq是文本框/输入id和名称。我希望在我从下拉菜单中选择该选项时运行该函数。期望元素ID和名称为全局变量是一种不好的做法,这是早期web上的IE功能,被其他浏览器复制以实现兼容性,应该被淘汰。非常感谢!我没有意识到我把onchange放在了输入上而不是select标签上。感谢您确认某些代码是正确的。有太多不同的编码方法,我很困惑。它被禁用是因为OP想要显示所选选项的值。不知道为什么,因为选项是可见的,禁用的元素不会成功。也许OP想要一个字段。
      if (a.value == "0") {
        banq.value = "0";
    
      } else if (a.value == "1") {
        banq.value = "1";
      }