Javascript (dart)我希望根据单击时是否选中单选按钮触发两个不同的onclick函数。我该怎么做?
我正在做一个游戏项目,用户必须点击随机选中的单选按钮 如果他单击选中的单选按钮,则会随机生成另一个单选按钮,而他刚才单击的单选按钮则未选中 如果他单击未选中的单选按钮,他将输掉比赛 因此,两次单击都会触发不同的功能 现在我有:Javascript (dart)我希望根据单击时是否选中单选按钮触发两个不同的onclick函数。我该怎么做?,javascript,html,dart,Javascript,Html,Dart,我正在做一个游戏项目,用户必须点击随机选中的单选按钮 如果他单击选中的单选按钮,则会随机生成另一个单选按钮,而他刚才单击的单选按钮则未选中 如果他单击未选中的单选按钮,他将输掉比赛 因此,两次单击都会触发不同的功能 现在我有: var Buttons = querySelectorAll('input[type="radio"]'); Buttons.onClick.listen( (event) => hithead(id)); 这使得相同的功能发生在所有的收音机点击,无论是否选
var Buttons = querySelectorAll('input[type="radio"]');
Buttons.onClick.listen(
(event) => hithead(id));
这使得相同的功能发生在所有的收音机点击,无论是否选中。如何使其仅在选中单击的收音机时使用一个,而在未选中单击的收音机时使用另一个
编辑
我试过使用这样的东西:
Buttons.onClick.listen(
if(Buttons.checked == true){
(event) => function1();
}
else{
function2();
}
但它不起作用,给了我一些错误
编辑2
编辑3
当单选按钮的单击事件触发时,必须检查其状态。您可以跟踪当前选定单选按钮的
id
,并将其与触发单击事件的单选按钮的id
进行比较。如果不相同,则用户单击未选中的收音机
在原始选择器下声明字符串:
var elemDmz = querySelectorAll('input[type="radio"]');
String currentRadioId = '';
你可以这样做:
elemDmz.onClick.listen((event) {
if (event.target.id == currentRadioId) {
print('checked radio clicked');
currentRadioId = event.target.id;
} else {
print('unchecked radio clicked');
currentRadioId = event.target.id;
}
});
我没有像您那样使用箭头函数,也没有使用单选按钮,但我的示例代码可能会给您一个线索-您可以从
事件
对象中检索选中的
属性(以及您需要的其他属性):
HTML
<input type="checkbox">
<div></div>
编辑
import 'dart:html';
void main() {
querySelector('input')
..onClick.listen(clickFun);
}
void clickFun(MouseEvent event) {
// please note here how I get the checked property
InputElement checkbox = event.target;
var checked = checkbox.checked;
if (checked) {
writeLog('checked');
} else {
writeLog('unchecked');
}
}
void writeLog(log) {
querySelector('div').text = log;
}
至于OP的评论,我认为他误解了单选按钮的用例。解释如下:
单选按钮()通常用于一组相互排斥的选项,您只能选择其中一个。因此,无论您单击哪个单选按钮,其选中状态始终为选中,表示您选择了该选项
在下面的演示中,您将永远不会看到警告说false
,您得到的只是true
:
1
2.
3
使用事件
对象确定是否选中它!然后用一个简单的if-else
语句来控制你的流量!我编辑了这个帖子,向你展示了我对你的评论的可视化,你的意思是这样的吗?我用我在edit2下添加的函数更新了主评论。它似乎部分起作用,但无论单击选中或未选中的收音机,它都会为我提供stopgame()函数。我尝试过这种方法,只是用hithead()(如果选中)和stopgame()(如果未选中)替换了写入日志函数,但无论单击选中或未选中的收音机,它似乎都会执行hithead()函数。有关我对您的方法的解释,请参见edit3。
<input type="checkbox">
<div></div>
import 'dart:html';
void main() {
querySelector('input')
..onClick.listen(clickFun);
}
void clickFun(MouseEvent event) {
// please note here how I get the checked property
InputElement checkbox = event.target;
var checked = checkbox.checked;
if (checked) {
writeLog('checked');
} else {
writeLog('unchecked');
}
}
void writeLog(log) {
querySelector('div').text = log;
}