我有一个asp.net listview,其列包含2个输入类型=按钮(id =开始,id =停止,1输入类型=文本(id = TimeMInutes)和1 span(id = spCountDown))。 从所有这些控件(包括listview)呈现的HTML是......
<table id="ctl00_ContentPlaceHolder1_lstViewFormulas_itemPlaceholderContainer" style="vertical-align:top; border:solid 1px gray">
<tr id="ctl00_ContentPlaceHolder1_lstViewFormulas_Tr1" style="vertical-align:top; border:solid 1px gray">
<td class="ListViewHeader" style="width:20%">
<span id="ctl00_ContentPlaceHolder1_lstViewFormulas_lblFormName">Step Name</span></td>
<td class="ListViewHeader" style="width:10%" align="center">
<span id="ctl00_ContentPlaceHolder1_lstViewFormulas_lblTiming">Timing</span></td>
<td class="ListViewHeader" style="width:30%">
<span id="ctl00_ContentPlaceHolder1_lstViewFormulas_Label6">Area Used</span></td>
<td class="ListViewHeader" style="width:10%">
<span id="ctl00_ContentPlaceHolder1_lstViewFormulas_lblClock">Timer</span></td>
<td class="ListViewHeader" style="width:30%">
<span id="ctl00_ContentPlaceHolder1_lstViewFormulas_lblProd">Products</span></td>
</tr>
<tr style="">
<td>
<span id="ctl00_ContentPlaceHolder1_lstViewFormulas_ctrl0_lblFormName">Step 1</span>
</td>
<td>
<span id="ctl00_ContentPlaceHolder1_lstViewFormulas_ctrl0_lblTiming">20</span>
</td>
<td>
<span id="ctl00_ContentPlaceHolder1_lstViewFormulas_ctrl0_lblAreaUsed">Scalp</span>
</td>
<td>
<input type="button" onclick="countdown(document.getElementById('TimeMinutes'), document.getElementById('spCountDown'))"; value="Start" id="Start" />
<input type="button" onclick='stopcountdown()'; value="Stop" id="Stop" />
<input type="text" value='20' id="TimeMinutes" />
<span id="spCountDown"></span>
</td>
我正在尝试将“TimeMinutes”输入type =“text”和“spCountDown”Span传递给javascript函数。
我尝试了几种方法,包括......
<input type="button" onclick="countdown(document.getElementById('TimeMinutes'), document.getElementById('spCountDown'))"; value="Start" id="Start" />
我也尝试使用输入id在javascript函数中找到这些控件,但是我没有得到正确的行。
我需要从输入类型=文本中获取值,并在javascript函数中开始倒计时。
var interval;
var seconds=0;
function countdown(txtminutes, spanid) {
interval = setInterval(function () {
var sp = document.getElementById("spanid");
var minutes = document.getElementById("txtminutes").value
if (seconds == 0) {
if (minutes == 0) {
sp.innerHTML = "countdown's over!";
clearInterval(interval);
return;
} else {
minutes--;
seconds = 60;
}
}
if (minutes > 0) {
var minute_text = minutes + (minutes > 1 ? ' minutes' : ' minute');
} else {
var minute_text = '';
}
var second_text = seconds > 1 ? 'seconds' : 'second';
sp.innerHTML = minute_text + ' ' + seconds + ' ' + second_text + ' remaining';
seconds--;
}, 1000);
}
function stopcountdown() {
window.clearInterval(interval);
var sp = document.getElementById("CountDown");
sp.innerHTML = ''
}
如何传递这些控件以便我可以从右侧获取并设置正确的值?
由于
答案 0 :(得分:0)
抱歉,我第一次快速回答。看起来你可以使用parseInt()将输入元素(字符串)中的值转换为整数。
var minutes = parseInt(document.getElementById("txtminutes").value)
在下面的If语句中,你将字符串与int进行比较,如果我没有误解某些东西。
另外,作为建议,您应该将计时器值存储在变量中,而不是每秒从输入元素中转换字符串。可以这样想,不要从输入元素中读取时间,只需用它来显示当前时间。它更安全,理论上对资源要求更低。
答案 1 :(得分:0)
你两次调用getElementById!
如果你使用这个
<input type="button" onclick="countdown(document.getElementById('TimeMinutes'), document.getElementById('spCountDown'))"; value="Start" id="Start" />
然后改变这个
var minutes = document.getElementById("txtminutes").value;
到这个
var minutes = txtminutes.value;
您将对元素的引用作为参数传递,然后尝试创建对id为引用的元素的新引用。那不行。只需删除document.getElementById部分。
另外......别忘了使用parseInt()
将字符串转换为int