Javascript jquery我们可以循环一个函数吗?
为什么这种类型的循环不能工作?如果这个函数没有循环,它就可以完美地工作。我需要这段代码,因为我有动态附加divJavascript jquery我们可以循环一个函数吗?,javascript,jquery,html,Javascript,Jquery,Html,为什么这种类型的循环不能工作?如果这个函数没有循环,它就可以完美地工作。我需要这段代码,因为我有动态附加div $(document).ready(function(){ for (var count = 1; count < 10; count++) { $('#keranjang').on('keyup', '#tinggikm'+count+', #lebarkm'+count, function(){ <!-- Ambi
$(document).ready(function(){
for (var count = 1; count < 10; count++) {
$('#keranjang').on('keyup', '#tinggikm'+count+', #lebarkm'+count, function(){
<!-- Ambil nilai !-->
var tinggi=parseInt($('#tinggikm'+count).val());
var lebar=parseInt($('#lebarkm'+count).val());
var harga=(tinggi * lebar) * 1000;
$('#hargakm'+count).val(format1(harga, "Rp."));
});
}
});
$(文档).ready(函数(){
对于(变量计数=1;计数<10;计数++){
$(“#keranjang”)。在('keyup'、'#tinggikm'+计数+'、#lebarkm'+计数,函数()上{
var tinggi=parseInt($('#tinggikm'+count).val());
var lebar=parseInt($('#lebarkm'+count).val());
var harga=(tinggi*lebar)*1000;
$(#hargakm'+count).val(格式1(harga,“Rp.”);
});
}
});
这是我从附加jquery中得到的html
countkm = 1;
countj = 1;
countp = 1;
$("#somebutton").click(function () {
var tipe = $( "#selecttipe option:selected" ).val();
$("#keranjang").append(
'<div class="col-md-4" style="border:1px solid #0d8b2a; border-radius:10px; width:31%; margin:10px">'+
'<p style="font-size:16px; letter-spacing:1px; font-weight:700; text-transform:uppercase; text-decoration:underline; margin-bottom:15px">'+
(tipe == "km" ? 'Kaca Mati ' : tipe == "j" ? 'Jendela ' : 'Pintu ')+(tipe == "km" ? countkm : tipe == "j" ? countj : countp)+
'</p>'+
'<div class="form-group">'+
'<label class="control-label">TINGGI (cm)</label>'+
'<input type="text" class="form-control" value="'+
(tipe == "Pintu" ? '200' : '100')+
'" id="tinggi'+tipe+(tipe == "km" ? countkm : tipe == "j" ? countj : countp)+'">'+
'<label class="control-label">LEBAR (cm)</label>'+
'<input type="text" class="form-control" value="'+
'100'+
'" id="lebar'+tipe+(tipe == "km" ? countkm : tipe == "j" ? countj : countp)+'">'+
'<label class="control-label">HARGA</label>'+
'<input type="text" class="form-control" disabled value="'+
'0'+
'" id="harga'+tipe+(tipe == "km" ? countkm : tipe == "j" ? countj : countp)+'">'+
'</div>'+
'</div>'
);
if (tipe == "km"){countkm++;}else if(tipe =="j"){countj++;}else{countp++;};
});
countkm=1;
countj=1;
countp=1;
$(“#somebutton”)。单击(函数(){
var tipe=$(“#selecttipe选项:selected”).val();
$(“#科兰江”)。追加(
''+
“”+
(tipe==“km”?“Kaca Mati”:tipe==“j”?“Jendela”:“Pintu”)+(tipe==“km”?countkm:tipe==“j”?countj:countp)+
“
”+
''+
"汀吉(cm)"+
''+
“LEBAR(厘米)”字样+
''+
“哈尔加”+
''+
''+
''
);
if(tipe==“km”){countkm++;}else if(tipe==“j”){countj++;}else{countp++;};
});
这是我创建div的按钮html
<select style="float:left; width:50%" class="form-control select2me" id="selecttipe" required>
<option value="km">Kaca Mati</option>
<option value="j">Jendela</option>
<option value="p">Pintu</option>
</select>
<button id="somebutton" style="float:left; margin-left:10px" type="submit" class="btn"> Tambah</button>
卡卡马蒂
詹德拉
平图
坦巴
使用id从选择器开始,而不是像这样循环怎么样:-
$(document).ready(function() {
$('#keranjang').on('keyup', '[id^=tinggikm], [id^=lebarkm]', function() {
<!-- Ambil nilai !-->
var tinggi = parseInt($('#tinggikm' + count).val());
var lebar = parseInt($('#lebarkm' + count).val());
var harga = (tinggi * lebar) * 1000;
$('#hargakm' + count).val(format1(harga, "Rp."));
});
});
$(文档).ready(函数(){
$('#keranjang')。在('keyup','id^=tinggikm','id^=lebarkm',函数()上{
var tinggi=parseInt($('#tinggikm'+count).val());
var lebar=parseInt($('#lebarkm'+count).val());
var harga=(tinggi*lebar)*1000;
$(#hargakm'+count).val(格式1(harga,“Rp.”);
});
});
这不是一种简单地附加事件的循环方法。您可以使用数据属性以更好、更简单的方式完成这项工作。我猜您需要在动态生成的输入字段上附加一个keyup
事件
这里是你能做的
div
中的每个元素分配一个唯一的id
,例如id=“tinggikm2”{i}“
,它将呈现为id=“tinggikm1”
,id=“tinggikm2”
keyup
方法的输入字段中。重要!为唯一计数添加一个data
属性,如data count=“#{i}”
,具体取决于您的语言李>
$(document).ready(function(){
$('.my_keyup_input').on('keyup', function(){
// Lets get the count to uniquely identify our related div elements
var count = $(this).data('count');
var tinggi=parseInt($('#tinggikm'+count).val());
var lebar=parseInt($('#lebarkm'+count).val());
var harga=(tinggi * lebar) * 1000;
$('#hargakm'+count).val(format1(harga, "Rp."));
});
});
根据创建的html,一个选项是捕获所有键控,并使用包含
.form组查找相应的输入和值。这样就不需要引用特定的已创建id。通过更改html的创建方式,有更有效的方法,但以下方法应适用于当前功能:
$('#keranjang').on('keyup', function(e){ //bind on keyup for entire container (no loop)
var inp = $(e.target), //the input for which the keyup was captured
grp=inp.closest('.form-group') //the group the input is in
inputs = grp.find('.form-control'), //all inputs
lbl = inputs.filter(':disabled'); //the disabled input is the total (if possible: using specific classes for the inputs and labels would be better)
lbl.val(inputs.not(lbl).toArray().reduce(function(t,i){return t * parseInt(i.value);}, 1000)); //use reduce on the other inputs, to multiply them with each other (with a base of 1000)
});
你想实现什么?你能分享HTML吗?我认为您根本不需要循环,可能是我们提供了更好的解决方案ID必须是唯一的。我建议您在所有元素上使用唯一的类,并执行$('.uniqueClass')。在(…)
count
在keyup回调函数之外声明。因此,回调中的$('#hargakm'+count)
等构造将不会引用为其创建函数的“count”的值。在某些情况下,$(此)
可以解决该问题,但由于存在多个元素,其他一些解决方法可能会更好。如Satpal所述,如果您共享您的HTML,社区可能会找到一个替代解决方案。不需要为动态添加的元素循环事件,只需执行以下操作:$(“父元素”)。关于('event','targeted_element',function(){…})很抱歉,我现在有另一个问题,所以现在我有多个‘’#hargakm'+count`box。。在keyup事件中,我希望所有活动框(动态添加)将所有#hargakm
相加,并将其放置在我创建的输入字段中。。怎么做*请注意,我有3种类型的输入字段#hargakm#hargap#hargaj
,非常感谢。如果您在同一个div
中有多个框,并且想要计算这些值的总和,那么您可以根据div
为它们分配一个唯一的类,例如div\u input\u box\u 2
,然后可以调用$('div\u input\u box'+2).each(函数(索引,元素){//这里您可以为每个元素做自己的事情。可以获取值并将其添加到在该函数之外声明的sum变量。})