Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.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 onclick不使用按钮_Javascript - Fatal编程技术网

Javascript onclick不使用按钮

Javascript onclick不使用按钮,javascript,Javascript,我试图让javascript函数在按下搜索按钮时工作,但该函数似乎没有运行。请导游 在我看来,JavaScript文件中的某个地方很可能存在语法错误。我之所以这样说,是因为没有任何东西可以阻止使用您显示的代码显示警报 检查浏览器的错误控制台(IE和Chrome中的F12)并查看是否存在任何错误,因为这些错误将阻止功能的定义。我查看了您的小提琴,它有一个额外的闭合括号。这应该行得通 function myFunction() { alert("I am an alert box!");

我试图让javascript函数在按下搜索按钮时工作,但该函数似乎没有运行。请导游


在我看来,JavaScript文件中的某个地方很可能存在语法错误。我之所以这样说,是因为没有任何东西可以阻止使用您显示的代码显示警报


检查浏览器的错误控制台(IE和Chrome中的F12)并查看是否存在任何错误,因为这些错误将阻止功能的定义。

我查看了您的小提琴,它有一个额外的闭合括号。这应该行得通

 function myFunction() {
    alert("I am an alert box!");
    return false;
 };
你的小提琴是这样的:

 function myFunction() {
    alert("I am an alert box!");
    } 
};
编辑1: 我添加了一个
返回false
,因为用户不想提交表单

编辑2:

既然没人想解释JS小提琴的问题,我就试试看

在最初的JS提琴中,“onLoad”用于侧边栏菜单的第二个下拉菜单

此设置不起作用的原因是JS FIDLE在onload函数中执行javascript代码。这意味着myFunction超出了范围

这就是为什么您需要在下拉菜单中使用“No wrap-in”和“No wrap-in”选项的原因。通过使用这两个选项,您的函数
myFunction
将处于全局范围

我希望这能澄清问题

编辑3

如果确实要使用onload事件。您可以添加一个click事件处理程序,并删除submit按钮标记中的
onclick
属性

一般来说,使用javascript设置事件处理程序可能更好

document.getElementById('hit').addEventListener('click', function() {
    alert("I am an alert box!");
});
如果您想使用jQuery,可以这样做:

$('#hit').click(function() {
    alert("I am an alert box!");
});

以下是我的作品:

        <form action="" method="get" id="searchform" >
          <input name="q" type="text" id="search" size="32" maxlength="128" class="txt"  >
          <input type="submit" id="hit" value="Search" onclick="myFunction()" class="btn">
        </form>
        <script>
           function myFunction() {
              alert("I am an alert box!");
           }
        </script>

函数myFunction(){
警报(“我是一个警报框!”);
}
但是我注意到你有一个
}
在你问题的末尾-可能是这件事导致了语法错误

更新:


问题是(除了
};
)小提琴手的设置。签出

您已经将函数包装在主体中,
onLoad
,只需将其更改为no wrap-in
。看小提琴

您还有一个额外的
}在您的代码中

更新:

这是因为:

  • 如果函数放在
    $(document).ready
    中,则它只能在ready回调中使用(以及在内部对象中)。你不能在外面引用它

  • 但是如果您将其放置在ready函数之外,那么它将获得全局范围,也就是说,您可以从任何地方调用它


将您的函数放入
try catch
块…应该可以工作

function myFunction() {
    try {    
        alert("I am an alert box!");
        //enter code here
        return false;
    }
    catch (err) {
        txt = "There was an error on this page.\n\n";
        txt += "Error description: " + err.message + "\n\n";
        txt += "Click OK to continue.\n\n";
        alert(txt);
    }
}

请尝试
onclick=“myFunction();return false”
,但这将停止表单的工作
你的JS应该执行,但它会阻止提交继续,因此你的表单不会提交。处理程序是否应该运行,然后提交表单?@AdamPlocher:这实际上是一个页面搜索,所以我不想将结果发布到任何地方,但我需要在我调用的函数中输入值。Fahad,您是否可以使用
而不是
type=“submit”
?按钮将看起来相同,但不会导致表单提交。谢谢。有一个错误说myFunction没有定义。你更新的Fiddle示例对我有用。也许你可以解释一下你改变了什么样的环境,以及为什么它起作用。“我知道了,但一开始我还不清楚。”Gohn67在你的小提琴手和我的小提琴手的左菜单上签出。很容易在设置中看到差异。是的,我知道差异是什么。我已经对你的答案投了赞成票。我只是建议你在回答中解释一下,让未来的访问者和法哈德·乌丁知道其中的区别。谢谢。@Gohn67因为onLoad在我们的例子中不需要在body-load上加载函数,但也因为这个小提琴手显然在onLoad()设置上有一个bug:你能解释一下两者之间的区别吗?请在将上述函数包装成$(document)后再试。js的ready()将不会执行,但是如果你把它放在它的外部,它将开始启动…而且如果函数有一个javascript内部函数名(例如:close()),那么它将无法工作。。今天遇到了这个问题,并且意识到close()被JS覆盖了
        <form action="" method="get" id="searchform" >
          <input name="q" type="text" id="search" size="32" maxlength="128" class="txt"  >
          <input type="submit" id="hit" value="Search" onclick="myFunction()" class="btn">
        </form>
        <script>
           function myFunction() {
              alert("I am an alert box!");
           }
        </script>
function myFunction() {
    alert("I am an alert box!");
}

};
^^
function myFunction() {
    try {    
        alert("I am an alert box!");
        //enter code here
        return false;
    }
    catch (err) {
        txt = "There was an error on this page.\n\n";
        txt += "Error description: " + err.message + "\n\n";
        txt += "Click OK to continue.\n\n";
        alert(txt);
    }
}