Javascript 为什么不传递值?

Javascript 为什么不传递值?,javascript,Javascript,我试图了解JS的基本知识。为什么下面的脚本总是产生相同的答案。为什么用户选择不传递给函数?请仅使用普通JS给出答案 <script> document.writeln('First person:'); </script> <select id="monthSelect1"> <option value="1">January</option> <option value="2">February&

我试图了解JS的基本知识。为什么下面的脚本总是产生相同的答案。为什么用户选择不传递给函数?请仅使用普通JS给出答案

<script>
    document.writeln('First person:');
</script>

<select id="monthSelect1">
    <option value="1">January</option>
    <option value="2">February</option>
    <option value="3">March</option>
    <option value="4">April</option>
    <option value="5">May</option>
    <option value="6">June</option>
    <option value="7">July</option>
    <option value="8">August</option>
    <option value="9">September</option>
    <option value="10">October</option>
    <option value="11">November</option>
    <option value="12">December</option>
</select>

<select id="daySelect1">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
</select>

<br />

<script>
    document.writeln('Second person:');
</script>

<select id="monthSelect2">
    <option value="1">January</option>
    <option value="2">February</option>
    <option value="3">March</option>
    <option value="4">April</option>
    <option value="5">May</option>
    <option value="6">June</option>
    <option value="7">July</option>
    <option value="8">August</option>
    <option value="9">September</option>
    <option value="10">October</option>
    <option value="11">November</option>
    <option value="12">December</option>
</select>

<select id="daySelect2">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
</select>

<br />

<input type="button" value="Calculate!" onclick=showResult()>

<script>

    var e = document.getElementById('monthSelect1');
    var i = e.selectedIndex;
    var sMonth1 = e.options[i].value;

    var e = document.getElementById('daySelect1');
    var i = e.selectedIndex;
    var sDay1 = e.options[i].value;

    var e = document.getElementById('monthSelect2');
    var i = e.selectedIndex;
    var sMonth2 = e.options[i].value;

    var e = document.getElementById('daySelect2');
    var i = e.selectedIndex;
    var sDay2 = e.options[i].value;

    function showResult()
    {
        alert('First person: ' + sMonth1 + '/' +  sDay1 + 
        ' Second person: ' + sMonth2 + '/' + sDay2);
    }

书面文件(“第一人”);
一月
二月
前进
四月
也许
六月
七月
八月
九月
十月
十一月
十二月
1.
2.
3.
4.
5.

书面文件(“第二人:”); 一月 二月 前进 四月 也许 六月 七月 八月 九月 十月 十一月 十二月 1. 2. 3. 4. 5.
var e=document.getElementById('monthSelect1'); var i=e.选择的指数; var sMonth1=e.options[i].值; var e=document.getElementById('daySelect1'); var i=e.选择的指数; var sDay1=e.options[i]。值; var e=document.getElementById('monthSelect2'); var i=e.选择的指数; var sMonth2=e.options[i].值; var e=document.getElementById('daySelect2'); var i=e.选择的指数; var sDay2=e.options[i].值; 函数showResult() { 警报('第一人称:'+sMonth1+'/'+sDay1+ '第二人称:'+sMonth2+'/'+sDay2); }

您需要计算showResult函数中的值。当页面加载并且所有值都被提取并存储在变量中时,脚本将运行

在showresult函数中,您只需调用包含过去值的变量。这就是为什么总是显示相同的结果

还要注意,您一次又一次地声明相同的变量
e和i
。相反,只有第一条语句必须包含
var
,而其他语句可以避免它

function showResult()
{
    var e = document.getElementById('monthSelect1');
    var i = e.selectedIndex;
    var sMonth1 = e.options[i].value;

    e = document.getElementById('daySelect1');
    i = e.selectedIndex;
    var sDay1 = e.options[i].value;

    e = document.getElementById('monthSelect2');
    i = e.selectedIndex;
    var sMonth2 = e.options[i].value;

    e = document.getElementById('daySelect2');
    i = e.selectedIndex;
    var sDay2 = e.options[i].value;
    alert('First person: ' + sMonth1 + '/' +  sDay1 + 
    ' Second person: ' + sMonth2 + '/' + sDay2);
}

因为你的计算过早

结果是:

  • 你写的是“第一人称”(为什么是
    文档。写的是
    而不是普通的标签,一个谜)
  • 您可以创建下拉列表
  • 你写“第二人称”
  • 您可以创建下拉列表
  • 获取下拉列表值并计算结果
  • 单击按钮时,将显示计算结果

计算必须在函数内部,才能在每次单击按钮时重新计算。

@maxval您面临的问题是因为您正在函数外部删除变量。因此在函数内部,变量的值将未定义。。因此控件永远不会到达您的声明部分。正确的代码应该是

<div>
    <select id="ddl1">
    <option value="a">a</option>
    <option value="b">b</option>
    </select>
    <input type="button" value="click" onclick="getdata();" />
</div>

<script type="text/javascript">
    function getdata()
    {
    var obj=document.getElementById('ddl1');
    var val=obj.value;
    alert('value:'+val);
    }
    </script>

A.
B
函数getdata()
{
var obj=document.getElementById('ddl1');
var val=目标值;
警报(“值:”+val);
}

您可以使用Mozilla Firefox插件-firebug轻松调试javascript,或者如果您使用IDEvisual studio则可以使用internet explorer

调试javascript,您应该解释原因。我理解。这是全局变量和局部变量的问题。