在 JQuery 和 vanilla JS 之间设置函数时可能发生冲突?

Possible conflict while setting function between JQuery and vanilla JS?

我正在尝试在 JS 和 PHP 中制作自己的盗版 bash 克隆,但我遇到了一个问题。尝试执行此脚本时,错误日志告诉我未定义 enteredCommand(),即使您可以在表单上方看到它。

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
    $(function(){
        if($(".command") !== null){
            function enteredCommand(){
        }
        } else{
            // do nothing
        }
    });
</script>
<form id="commandField" onsubmit="return enteredCommand();">
    <p>bbash~ User:</p>
    <input class="command" type=text>
</form>

请帮忙!我是新的。这不是重复的,因为我不明白它是如何定义的。是的,控制台指定错误发生在“onsubmit”。

这是因为您定义的 enteredCommand() 函数超出了 onsubmit 调用的范围。

您需要反转逻辑,使 if 条件在 enteredCommand() 函数内。另请注意在 JS 代码中使用了一个不显眼的事件处理程序。将 onX 属性添加到 HTML 不再是好的做法,应该避免。

最后,要从 jQuery 对象中检索值,您需要调用 val()。将 jQuery 对象与 null 进行比较永远不会为真,因为 jQuery 对象永远不会为空。

let execCommand = c => {
  console.log(`User entered '${c}', handle it here...`);
} 

$(function() {
  let $command = $('.command');

  $('#commandForm').on('submit', e => {
    e.preventDefault(); // stop the form submission so you can handle it manually
    
    let command = $command.val().trim();
    if (command)
      execCommand(command);
  });
});
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<form id="commandForm">
  <p>bbash~ User:</p>
  <input class="command" type="text" />
</form>