如何确定Dart中的输入类型?
我想找到表单上的所有单选按钮,而不去管其他输入类型。我的代码如下所示: form.queryAllselect,input.forEachElement el{ 如果el是RadioButtonInputElement{ 打印“有单选按钮”; }否则{ 打印“有其他输入类型”; } }如何确定Dart中的输入类型?,dart,html-input,dart-html,Dart,Html Input,Dart Html,我想找到表单上的所有单选按钮,而不去管其他输入类型。我的代码如下所示: form.queryAllselect,input.forEachElement el{ 如果el是RadioButtonInputElement{ 打印“有单选按钮”; }否则{ 打印“有其他输入类型”; } } 这将导致除select之外的所有输入类型都被标识为单选按钮。事实上,如果我在then branch got单选按钮中查看el,它总是报告为InputElement。我最终更改了测试: 如果el.type==“无线
这将导致除select之外的所有输入类型都被标识为单选按钮。事实上,如果我在then branch got单选按钮中查看el,它总是报告为InputElement。我最终更改了测试: 如果el.type==“无线电”{ 打印“有单选按钮”; }
我最终改变了测试: 如果el.type==“无线电”{ 打印“有单选按钮”; }
很容易理解,您似乎认为RadioButtonInputElement是InputElement的一个子类。事实上,事情或多或少是以相反的方式进行的:实现。当您记住输入元素以各种形式保留为输入元素时,这实际上是有意义的,而区分其外观和行为的是它的type属性 正如您所发现的,所有输入元素因此都与InputElement实现的所有接口匹配:type=radio的输入将与ButtonInputElement匹配,就像type=button的输入将与RadioButtonInputElement匹配一样。它们都是InputElements并满足两个接口 正如您在回答中发现的,解决方案是测试InputElement的类型字段: 如果el.type==“无线电”{ 打印“有单选按钮”; }
我觉得这个解释是有道理的,所以尽管您已经找到了解决方案,我还是添加了这个答案。可以理解,您似乎认为RadioButtonInputElement是InputElement的一个子类。事实上,事情或多或少是以相反的方式进行的:实现。当您记住输入元素以各种形式保留为输入元素时,这实际上是有意义的,而区分其外观和行为的是它的type属性 正如您所发现的,所有输入元素因此都与InputElement实现的所有接口匹配:type=radio的输入将与ButtonInputElement匹配,就像type=button的输入将与RadioButtonInputElement匹配一样。它们都是InputElements并满足两个接口 正如您在回答中发现的,解决方案是测试InputElement的类型字段: 如果el.type==“无线电”{ 打印“有单选按钮”; }
我觉得这个解释是有道理的,所以尽管您已经找到了解决方案,我还是添加了这个答案。您也可以编写一个查询选择器,只返回单选按钮 List List=element.querySelectorAllinput[type='radio'];
您还可以编写一个查询选择器,只返回单选按钮 List List=element.querySelectorAllinput[type='radio'];
我认为这值得一提。这非常令人困惑。+1@Ladicek-单选按钮InputElement同时实现CheckboxInputElement和PasswordInputElement这一点很不直观。我认为这值得提出一个bug。这非常令人困惑。+1@Ladicek-单选按钮InputElement同时实现CheckboxInputElement和PasswordInputElement远不是直观的