我在空闲时间做了一个小的莫尔斯电码转换器,第一次在Chrome上试用。当调用translate()
函数时,Chrome 会把Uncaught TypeError: translate is not a function at HTMLInputElement.onclick (morse:28)
扔到我的脸上。其他功能按预期工作,并且可以从控制台调用translate()
而不会出现问题。此外,它在火狐中完美运行。
相关(我认为)HTML :
<div id="mainspan">
<form id="morseForm">
<textarea id="morseInput" rows="8" cols="50"></textarea><br><br>
<input type="radio" name="trans" id="mtt" value="morseToText"><label for="mtt">Morse → text</label><br>
<input type="radio" name="trans" id="ttm" value="testToMorse"><label for="ttm">Text → morse</label><br>
<input type="button" onclick="translate()" value="Translate"><br><br>
<textarea id="morseOutput" rows="8" cols="50"></textarea><br>
</form>
</div>
和JS:
function translate() {
if (document.getElementById("mtt").checked == true) {morseToText()};
if (document.getElementById("ttm").checked == true) {textToMorse()};
}
这可能是Chrome的"不需要的功能",translate
似乎有一些"特殊含义"事件,尽管它通常是未定义的
<script>
function translate () {
alert('or nah');
}
</script>
<button onclick="translate()">
translate!
</button>
但是,不起作用,
<script>
function translate () {
alert('or nah');
}
window.onload = function() {
document.querySelector('button').addEventListener('click', translate);
}
</script>
<button>
translate!
</button>
作品 - 本质上相同,但显然不是
最简单的解决方案
- 使用 addEventListener 方法将单击事件添加到按钮,或者
- 不要使用名称
translate