Javascript 为什么不传递值?
我试图了解JS的基本知识。为什么下面的脚本总是产生相同的答案。为什么用户选择不传递给函数?请仅使用普通JS给出答案Javascript 为什么不传递值?,javascript,Javascript,我试图了解JS的基本知识。为什么下面的脚本总是产生相同的答案。为什么用户选择不传递给函数?请仅使用普通JS给出答案 <script> document.writeln('First person:'); </script> <select id="monthSelect1"> <option value="1">January</option> <option value="2">February&
<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,或者如果您使用IDE如visual studio则可以使用internet explorer调试javascript,您应该解释原因。我理解。这是全局变量和局部变量的问题。