Javascript 我试图在循环时组合字符串
如果选中前两个框,我试图得到的结果将是12,如果选中3个框,结果将是13。x显示为未定义。我假设这与变量范围有关,但即使我在输入函数中查看x,它一次只显示一个选择,它也不会对它们进行组合Javascript 我试图在循环时组合字符串,javascript,jquery,Javascript,Jquery,如果选中前两个框,我试图得到的结果将是12,如果选中3个框,结果将是13。x显示为未定义。我假设这与变量范围有关,但即使我在输入函数中查看x,它一次只显示一个选择,它也不会对它们进行组合 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> <script> function MLSNumbersSelected() { $("i
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script>
function MLSNumbersSelected()
{
$("input:checkbox").each(function(){
var $this = $(this);
if($this.is(":checked")){
var x = x+" "+$this.attr("id");
}
});
alert(x); //should equal what is checked for example 1 or 1 2.
}
</script>
</head>
<body>
<p id="checkBoxes">
<input type="checkbox" class="checkBoxClass" id="1" />1<br/>
<input type="checkbox" class="checkBoxClass" id="2" />2<br/>
<input type="checkbox" class="checkBoxClass" id="3" />3</p>
<p>
Check off some options then click button.
<input type="button" name="button" id="button" value="Click to Test" onClick="MLSNumbersSelected()">
</p>
</body>
函数mlsnumberselected()
{
$(“输入:复选框”).each(函数(){
var$this=$(this);
如果($this.is(“:checked”)){
var x=x++$this.attr(“id”);
}
});
警报(x);//应等于检查的值,例如1或12。
}
1
2
三,
勾选一些选项,然后单击按钮。
您必须在.each()循环之外声明x。现在,它是在.each()
循环中声明的,然后在调用下一个回调之前,它超出范围,因此您无法将它的值从一个回调累积到下一个回调:
function MLSNumbersSelected() {
var x = "";
$("input:checkbox").each(function(){
if (this.checked) {
x += " " + this.id;
}
});
console.log(x);
}
仅供参考,我还从循环中删除了jQuery的使用,因为当DirectDOM属性已经提供了您所需要的一切时,就不需要jQuery了
您还可以通过向选择器添加:checked
,使其仅选择已选中的复选框,让选择器为您完成工作。然后,您可以使用.map()
和.join()
更轻松地创建列表:
function MLSNumbersSelected() {
var x = $("input:checkbox:checked").map(function(){
return this.id;
}).get().join(" ");
console.log(x);
}
必须在.each()
循环之外声明x。现在,它是在.each()
循环中声明的,然后在调用下一个回调之前,它超出范围,因此您无法将它的值从一个回调累积到下一个回调:
function MLSNumbersSelected() {
var x = "";
$("input:checkbox").each(function(){
if (this.checked) {
x += " " + this.id;
}
});
console.log(x);
}
仅供参考,我还从循环中删除了jQuery的使用,因为当DirectDOM属性已经提供了您所需要的一切时,就不需要jQuery了
您还可以通过向选择器添加:checked
,使其仅选择已选中的复选框,让选择器为您完成工作。然后,您可以使用.map()
和.join()
更轻松地创建列表:
function MLSNumbersSelected() {
var x = $("input:checkbox:checked").map(function(){
return this.id;
}).get().join(" ");
console.log(x);
}
在循环中重新初始化x。这将解决您的问题:
function MLSNumbersSelected()
{
var x = '';
$("input:checkbox").each(function(){
var $this = $(this);
if($this.is(":checked")){
x = x+" "+$this.attr("id");
}
});
alert(x);
}
在循环中重新初始化x。这将解决您的问题:
function MLSNumbersSelected()
{
var x = '';
$("input:checkbox").each(function(){
var $this = $(this);
if($this.is(":checked")){
x = x+" "+$this.attr("id");
}
});
alert(x);
}
使用此选项查看它是否实现了您所需的功能:
var inputs = $("input:checkbox");
inputs.each(function(i){
if(inputs.eq(i).is(":checked")){
x = x+" "+inputs.eq(i).attr("id");
}
});
使用此选项查看它是否实现了您所需的功能:
var inputs = $("input:checkbox");
inputs.each(function(i){
if(inputs.eq(i).is(":checked")){
x = x+" "+inputs.eq(i).attr("id");
}
});
每次在循环中都定义x,而不是定义一次x,并通过循环一直附加到它。
例如:
函数mlsnumberselected()
{
var x;
$(“输入:复选框”).each(函数(){
var$this=$(this);
如果($this.is(“:checked”)){
x++=“”+$this.attr(“id”);
}
});
警报(x);//应等于检查的值,例如1或12。
}
您每次在循环中定义x,而不是定义x一次,并通过循环继续附加到它。
例如:
函数mlsnumberselected()
{
var x;
$(“输入:复选框”).each(函数(){
var$this=$(this);
如果($this.is(“:checked”)){
x++=“”+$this.attr(“id”);
}
});
警报(x);//应等于检查的值,例如1或12。
}
$(函数(){
$('#按钮')。在('单击',函数()上){
var x=$(':复选框:选中').map(函数(){
返回此.id;
})
.get().join(“”);
警报(x);
});
});代码>
1
2
三,
勾选一些选项,然后单击按钮。
$(函数(){
$('#按钮')。在('单击',函数()上){
var x=$(':复选框:选中').map(函数(){
返回此.id;
})
.get().join(“”);
警报(x);
});
});代码>
1
2
三,
勾选一些选项,然后单击按钮。