Javascript 如果选中复选框,则函数更新字符串或值
我正在尝试编写一个Javascript 如果选中复选框,则函数更新字符串或值,javascript,jquery,d3.js,Javascript,Jquery,D3.js,我正在尝试编写一个函数,当选中复选框时,该函数将从input:radio或text()返回值 没有必要同时返回两个。其中一个会有帮助 这是html模板示例: $('input.choose age')。在('change',function()上{ $('input.choose age')。不是(this).prop('checked',false); }); 10-14 15-19 10-19 最简单的d3方法是: d3.selectAll(“.choose age”) .on(“更改
函数
,当选中复选框
时,该函数将从input:radio
或text()返回值
没有必要同时返回两个。其中一个会有帮助
这是html
模板示例:
$('input.choose age')。在('change',function()上{
$('input.choose age')。不是(this).prop('checked',false);
});代码>
10-14
15-19
10-19
最简单的d3
方法是:
d3.selectAll(“.choose age”)
.on(“更改”,函数(){
console.log(this.value);
});代码>
10-14
15-19
10-19
最简单的d3
方法是:
d3.selectAll(“.choose age”)
.on(“更改”,函数(){
console.log(this.value);
});代码>
10-14
15-19
10-19
为什么您的代码不起作用:
Atempt 1、3和4:
Label是jquery元素,您的“返回结果[0]”将在jquery例程的某个位置返回结果
Atempt2:
代码现在返回结果,而结果在将来某处设置。所以现在它还没有定义
如何做到:
同步(不推荐):
但是,这将阻止浏览器线程,导致延迟并最终崩溃(糟糕!)
异步:
1.回拨:
function ageLabel(callback){
d3.selectAll(".choose-age") .on("change", function(d){callback(this.value);});
}
ageLabel((result)=>{
//age label checked, so now work with result
});
// thanks to mark
2.承诺:
function ageLabel(){
Return new Promise(function(resolve,reject){
d3.selectAll(".choose-age") .on("change", function(d){resolve(this.value); });
});
}
ageLabel().then((result)=>{
//do sth with result
});
为什么您的代码不起作用:
Atempt 1、3和4:
Label是jquery元素,您的“返回结果[0]”将在jquery例程的某个位置返回结果
Atempt2:
代码现在返回结果,而结果在将来某处设置。所以现在它还没有定义
如何做到:
同步(不推荐):
但是,这将阻止浏览器线程,导致延迟并最终崩溃(糟糕!)
异步:
1.回拨:
function ageLabel(callback){
d3.selectAll(".choose-age") .on("change", function(d){callback(this.value);});
}
ageLabel((result)=>{
//age label checked, so now work with result
});
// thanks to mark
2.承诺:
function ageLabel(){
Return new Promise(function(resolve,reject){
d3.selectAll(".choose-age") .on("change", function(d){resolve(this.value); });
});
}
ageLabel().then((result)=>{
//do sth with result
});
不,不要这样做。如果异步事件(标签检查)由同步代码处理,浏览器线程将被阻塞,直到事件发生。这不是一种好的风格。使用回扣或承诺…不。不要这样做。如果异步事件(标签检查)由同步代码处理,浏览器线程将被阻塞,直到事件发生。这不是一种好的风格。使用回电或承诺…太好了!谢谢,马克。我将尝试根据另一个答案使用您的示例。@estebanpdl,请参阅更新的答案,我不明白您的问题。Jonas w的答案是可行的,但对你来说,你真正想做的事情太复杂了。太棒了!这是一个简单的方法。我想我需要这样的东西。但是,当我console.log(ageLabel())
并更改为(即15-19)时,它仍然显示10-14。我需要换点别的吗?谢谢你的支持。回答总是很好的,投了赞成票,但我相信你不需要在函数(d)
中使用参数(d
),如果你只是处理这个
@GerardoFurtado,你当然是对的。当使用d3时,这是一种习惯的力量,总是传递“魔法”d
!伟大的谢谢,马克。我将尝试根据另一个答案使用您的示例。@estebanpdl,请参阅更新的答案,我不明白您的问题。Jonas w的答案是可行的,但对你来说,你真正想做的事情太复杂了。太棒了!这是一个简单的方法。我想我需要这样的东西。但是,当我console.log(ageLabel())
并更改为(即15-19)时,它仍然显示10-14。我需要换点别的吗?谢谢你的支持。回答总是很好的,投了赞成票,但我相信你不需要在函数(d)
中使用参数(d
),如果你只是处理这个
@GerardoFurtado,你当然是对的。当使用d3时,这是一种习惯的力量,总是传递“魔法”d
!谢谢你的建议,乔纳斯。ageLabel((result)=>{})内的结果代码>使用Callback
来自示例尝试2?如果您希望像示例atempt 2中那样解决回调,请像这样解决“Callback($(this).next('span').text())”谢谢您的帮助,Jonas。“我将练习这些例子。谢谢你的建议,”乔纳斯说。ageLabel((result)=>{})内的结果代码>使用Callback
来自示例尝试2?如果您希望像示例atempt 2中那样解决回调,请像这样解决“Callback($(this).next('span').text())”谢谢您的帮助,Jonas。我将练习这些例子。