Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.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 windows onload-不引人注目地分析表单错误中的值_Javascript - Fatal编程技术网

Javascript windows onload-不引人注目地分析表单错误中的值

Javascript windows onload-不引人注目地分析表单错误中的值,javascript,Javascript,我目前在html代码中有一个onclick函数,它是一个自动完成函数。我的目标是将所有javascript从html移到一个单独的文件中,但是,在这个实例中传输不起作用 这是有效的:它正确地调用函数 <form> <input class="input" id="location" onclick="showHint(this.value)" value=""/> <input class="input_submit" id="fj" type="sub

我目前在html代码中有一个onclick函数,它是一个自动完成函数。我的目标是将所有javascript从html移到一个单独的文件中,但是,在这个实例中传输不起作用

这是有效的:它正确地调用函数

<form>  
<input class="input" id="location" onclick="showHint(this.value)" value=""/>
    <input class="input_submit" id="fj" type="submit" value="Find!"/>
</form>

当上述内容最初向我提出时,我的JS文件中似乎有一个不正确的代码,使其无法正确启动

不确定
window
是否具有
onload
属性。即使如此,当JavaScript解释器将您的函数分配给事件处理程序时,事件处理程序早就被触发了,因此您的代码永远不会运行

尝试将您的
onclick
初始化放在
末尾的
标记中

<!-- ... -->
    <script>    
        var locationElement = document.getElementById("location");
        locationElement.onclick = function() {
            showHint(locationElement.value);
        };
    </script>
</body>

这个稍微干净一点。作为交换,您需要第三方库。

基于您提供的代码并保持HTML不变,这将为您提供所需的结果:

window.onload = function(){
    var showHint = function(val){
        alert(val);
    };

    document.getElementById("location").onclick = function(){
        showHint(this.value);
    }; 
};
下面是一把小提琴,它显示了正在运行的代码:


希望有帮助

出于某种原因,您的建议对我不起作用。另外可能是
绑定到了
窗口
(我不记得了,但很可能)您正在设置onclick处理程序的范围。将
document.getElementById(“location”)
分配给变量,并在
onclick
行和
showHint
行使用该变量:
showHint(location.value)。我会相应地编辑。嗯……我不知道我有一个JS控制台。我只是想澄清一下,我只是为了好玩才在几周内(累计几个小时!)在Firefox中学习javascript,
CTRL+SHIFT+K
,在Chrome中学习javascript,
CTRL+SHIFT+J
,在IE中学习javascript。不幸的是,没有。还在胡闹。当然,它仍然适用于html中的onclick=“showHint(this.value)”。我就是搞不懂为什么这种不引人注目的方式是行不通的。我不明白为什么事情会变得更复杂。JS控制台似乎也没有显示任何错误。谢谢Josh,但不幸的是,它没有显示任何错误只是确认showHint是一个大函数,它是根据用户在框中键入的内容调用的。您是否尝试在用户键入提示时显示提示?或者什么时候提交表格?按照现在编写代码的方式,只有当他们单击输入框时才会触发。。。如果框中没有任何内容,则警报窗口中不会显示任何内容。。。下面是一个有值的示例:要让它在他们键入时启动,您可以这样做:谢谢@Josh taylor,我的代码也包含onkeyup,但我简化了代码以显示我想要实现的目标。我的主要函数showHint应该读取用户根据列表键入和匹配的任何内容,并在查找匹配项时引入innerhtml。我的函数在html中工作,但是当试图将代码移动到不引人注目的位置时,值没有正确地传递给函数。这很有趣。该功能在JSFIDLE中工作,这与将代码放在单独的文件中基本相同,就像您试图实现的那样。您将脚本块放在哪里?我唯一能想到的是,在订阅click或keyup事件时,DOM可能没有完全加载。引用外部文件的脚本块是位于代码底部还是顶部?如果在顶部,试着移动到关闭标记的正上方,看看是否有区别。
<!-- ... -->
    <script>    
        var locationElement = document.getElementById("location");
        locationElement.onclick = function() {
            showHint(locationElement.value);
        };
    </script>
</body>
$(document).ready(function() {    
    $("#location").click(function() {
        showHint($(this).val());
    });
}
window.onload = function(){
    var showHint = function(val){
        alert(val);
    };

    document.getElementById("location").onclick = function(){
        showHint(this.value);
    }; 
};