我的代码很简单但行print("checky changed")
未运行。它应该运行,因为在注册onChange
侦听器后,应该在复选框的选中状态更改时打印消息,我将复选框的选中状态更改两次:首先直接更改{{1三秒后执行,每次都有不同的值。
如果我手动选中或取消选中该复选框,则会打印该信息。
我真的需要帮助解决这个问题:为什么在Timer
的值以编程方式更改时,永远不会打印消息"checky changed"
?
我有这个HTML代码:
checky.checked
和这个Dart代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Test</title>
<script async type="application/dart" src="script.dart"></script>
<script async src="packages/browser/dart.js"></script>
</head>
<body>
<h1>Test</h1>
<input type="checkbox" id="checky">
</body>
</html>
非常感谢您提供任何帮助!
答案 0 :(得分:2)
表单选项onchange不会以编程方式触发。 更改checked属性后,需要执行on change方法。 SEB
答案 1 :(得分:2)
您可以手动发送onChange
事件:
import 'dart:html';
import 'dart:async';
void main() {
CheckboxInputElement checky = querySelector('#checky');
checky
..checked = true
..onChange.listen((_) {
print("checky changed");
});
new Timer(const Duration(seconds: 1), () {
checky.dispatchEvent(new Event("change"));
checky.checked = !checky.checked;
});
}