如何在文本字段中循环Js函数和事件
how to loop Js function and event in textfield?
使用事件onfocus()
和onblur()
循环textfield
时出现问题。在单行中,该事件可以正确运行,但如果我尝试在文本字段中使for
循环两行,则textfield
上的该事件无法运行。
我需要这个问题的解决方案,谢谢
<script type="text/javascript">
function startCalc() {
interval=setInterval("calc()",1);
}
function calc() {
var obj=document.hitung;
var one=obj.sks.value;
if(one == 2)
{ var hsks = 14; }
else if(one == 4)
{ var hsks = 28; }
else
{ var hsks = 0; }
obj.n_pertemuan.value=(hsks);
}
function stopCalc() {
clearInterval(interval);
}
</script>
<center>
<form name="hitung">
<?php
for($x = 1; $x <= 2; $x++)
{
?>
<table width="205" border="1" cellspacing="0" cellpadding="2">
<tr>
<td height="44" colspan="2" align="center">Js Coba</td>
</tr>
<tr>
<td width="84" align="center">SKS</td>
<td width="113" align="center">PERTEMUAN</td>
</tr>
<tr>
<td align="center"><input name="sks" type="text" onFocus="startCalc();" onBlur="stopCalc();" size="5"/></td>
<td align="center"><input name="n_pertemuan" type="text" size="5" ></td>
</tr>
</table>
<?php } ?>
</form>
</center>
这里我将指出您所犯的一些错误:
当您创建三个或多个表时,该语句
var
one = obj.sks.value;
当你有更多的文本字段时,它会返回错误,因为这样它就会像一个类似数组的对象。所以你必须迭代它们才能得到它们的值。最好使用getElementsByName方法。我做了一些改变以使事情变得清楚。首先交换事件处理程序以更好地控制您的程序,否则它将运行疯狂,因为您在每毫秒后使用setinterval。
<input name="sks" type="text" onBlur="startCalc();" onFocus="stopCalc();" size="5"/>
我还更改了你的startClac功能
var obj, one, interval;
function startCalc(){
obj=document.hitung;
one=document.getElementsByName('sks');
for(i=0;i<one.length;i++){
(function(val){
if(one[val].value !=""){
interval=setInterval(function (){
calc(one[val].value);
},1000);
}
})(i);
}
}
最好在startCalc
之外声明obj、one和interval变量,以获得更好的控制。
使用getElementsByName方法获取名称为'sks'
的每个输入。对它们进行迭代以检查它们的值。它会产生一个与closure
相关的问题,所以我建议使用一个立即调用的函数来保持i的值不变,除非它会大于实际的文本字段数,并且你会失去对它的跟踪
如果你想让你的代码省略一个变量的value属性,因为它是一个节点列表,而节点列表没有value属性。它只有length属性。在startCalc()函数内部写
one = obj.sks;
output = obj.n_pertemuan;
将obj,one and output
变量排除在calc()函数的作用域之外。以下是您必须在calc()函数内部进行的修改,并保持其余部分不变。
for(i=0;i<one.length;i++){
(function(val){
if(one[val].value == 2)
{ var hsks = 14; }
else if(one[val].value == 4)
{ var hsks = 28; }
else
{ var hsks = 10; }
output[val].value=hsks;
console.log(output[val].value);
})(i);
}
相关文章:
- 当js函数's已执行
- 调用php数组中的JS函数
- 为JS函数添加延迟
- 我如何制作一个JS函数,它可以从相似的原始颜色双向更改为某个颜色
- 使用JS函数来使用另一个函数的语法?node.js
- 将JS函数传递给Emscripten生成的代码
- 是否可以在使用headerphp函数后自动调用JS函数
- 如何在.js函数中检索来自其他模板的表单的目标值
- 简单的JS函数.需要对变量进行澄清
- 无法识别从php创建的Js函数
- 如何将对象传递给这个js函数
- 全局窗口热键在最小化chrome窗口时调用js函数
- 将重定向URL链接添加到JS函数
- 从PHP调用JS函数不起作用
- js函数堆栈传入变量,.hide()不起作用
- 当运行JS函数时,如何在c#中的Edgejs中获取错误文本
- 如何让JS函数自行执行
- 使用默认js函数的javascript中的日期的第二天
- 如何从页面中的jquery调用angular js函数控制器
- 从.js文件调用html中的js函数