Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript (dart)我希望根据单击时是否选中单选按钮触发两个不同的onclick函数。我该怎么做?_Javascript_Html_Dart - Fatal编程技术网

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;
}