Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.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函数_Javascript_Html - Fatal编程技术网

找不到我的javascript函数

找不到我的javascript函数,javascript,html,Javascript,Html,javascript初学者 我得到以下错误,但看不出代码有什么问题。我在以前的研讨会上也做过类似的工作,他们还好吗?我在workshop12.js中有“required”函数,希望使用它检查输入是否为空。我从w3schools获取代码 js html 登录表格 名称 您的函数仅在ready函数的范围内,在该范围外不可用 您的元素正在全局范围内寻找该函数。将功能移到ready功能之外,如下所示: $( document ).ready(function() { ... whateve

javascript初学者

我得到以下错误,但看不出代码有什么问题。我在以前的研讨会上也做过类似的工作,他们还好吗?我在workshop12.js中有“required”函数,希望使用它检查输入是否为空。我从w3schools获取代码

js

html


登录表格
名称

您的函数仅在
ready
函数的范围内,在该范围外不可用

您的元素正在全局范围内寻找该函数。将功能移到
ready
功能之外,如下所示:

$( document ).ready(function() {

    ... whatever

});

// Check that input is not empty
function required() {
    var x = document.forms["loginForm"]["inputName"].value;
    document.write (x);
    if(x = " ") {
        alert("Please input a value");
        return false;
    }
    else {
        alert("Correct");
        return true;    
    }
}

您的函数仅在
ready
函数的范围内,在该范围外不可用

您的元素正在全局范围内寻找该函数。将功能移到
ready
功能之外,如下所示:

$( document ).ready(function() {

    ... whatever

});

// Check that input is not empty
function required() {
    var x = document.forms["loginForm"]["inputName"].value;
    document.write (x);
    if(x = " ") {
        alert("Please input a value");
        return false;
    }
    else {
        alert("Correct");
        return true;    
    }
}

你有一个范围问题

Javascript中有不同类型的作用域

全局作用域:在每个函数中都可以访问作用域为全局的变量/函数。通常情况下,您不希望对任何全局范围进行定义,因为在每个人都使用不同框架的情况下,您永远不知道是谁将变量写入全局范围

全局范围的示例:

window.bla = "I am global scoped";

var globalVar = "I am also global scoped";

function accessGlobal(){
 console.log (globalVar)
}
现在还有一个函数作用域:函数中声明的变量是局部作用域,不能从外部访问(如果您更像Java的人,请将其视为私有变量)

由于使用了jQuery的onReady函数,因此您所需的函数无法全局访问

见此:

$( document ).ready(function() {
你看到函数了吗?因此,您所需的函数是函数作用域

在您的情况下,我建议采用模块模式,以防止污染全球范围

试试这个:

var myModule = {};

myModule.required = function(){
var x = document.forms["loginForm"]["inputName"].value;
        document.write (x);
        if(x.length === 0) {
            alert("Please input a value");
            return false;
        }
        else {
            alert("Correct");
            return true;    
        }
}
在HTML代码中,使用myModule.required()替换required()

顺便说一句,在你需要的功能中,你又犯了一个错误。您试图检查变量是否为空,如下所示:

if (x = " ")
在Javascript中,您需要使用==或更好的==检查变量。(我已在您的代码中更改了此选项)

==和===之间的区别只是===还检查正确的类型

例如


你有一个范围问题

Javascript中有不同类型的作用域

全局作用域:在每个函数中都可以访问作用域为全局的变量/函数。通常情况下,您不希望对任何全局范围进行定义,因为在每个人都使用不同框架的情况下,您永远不知道是谁将变量写入全局范围

全局范围的示例:

window.bla = "I am global scoped";

var globalVar = "I am also global scoped";

function accessGlobal(){
 console.log (globalVar)
}
现在还有一个函数作用域:函数中声明的变量是局部作用域,不能从外部访问(如果您更像Java的人,请将其视为私有变量)

由于使用了jQuery的onReady函数,因此您所需的函数无法全局访问

见此:

$( document ).ready(function() {
你看到函数了吗?因此,您所需的函数是函数作用域

在您的情况下,我建议采用模块模式,以防止污染全球范围

试试这个:

var myModule = {};

myModule.required = function(){
var x = document.forms["loginForm"]["inputName"].value;
        document.write (x);
        if(x.length === 0) {
            alert("Please input a value");
            return false;
        }
        else {
            alert("Correct");
            return true;    
        }
}
在HTML代码中,使用myModule.required()替换required()

顺便说一句,在你需要的功能中,你又犯了一个错误。您试图检查变量是否为空,如下所示:

if (x = " ")
在Javascript中,您需要使用==或更好的==检查变量。(我已在您的代码中更改了此选项)

==和===之间的区别只是===还检查正确的类型

例如


看起来您也在使用jQuery。您还记得包括它吗?您将它隐藏在ready函数的作用域内。@j08691 yes包含jquery-if(x==“”)//使用双等式oops我确实有双等式看起来您也在使用jquery。您是否还记得将其包括在内?您正在将其隐藏在ready函数的作用域内。@j08691 yes已包括jquery-if(x==“”)//使用双相等对象我确实有双相等对象。我还注意到,全局作用域上可能已经存在名为
required
的对象。在chrome中调用未定义的引用时,它会记录
required()VM244:2未捕获引用错误:required未定义
,在firefox中
required()引用错误:required未定义
@Daniel A White&Jamiec。我已经按照建议移动了它,但仍然保持不变error@Austin. 干杯我改了名字,这就解决了问题。谢谢大家的帮助。非常感谢有一个错误!如果(x=“”)将永远不起作用。请参阅我的回答。我还注意到,全局作用域中可能已经存在名为
required
的内容。在chrome中调用未定义的引用时,它会记录
required()VM244:2未捕获引用错误:required未定义
,在firefox中
required()引用错误:required未定义
@Daniel A White&Jamiec。我已经按照建议移动了它,但仍然保持不变error@Austin. 干杯我改了名字,这就解决了问题。谢谢大家的帮助。非常感谢有一个错误!如果(x=“”)将永远不起作用。看到我的答案了吗