在javascript的主函数中调用另一个函数

时间:2013-05-13 14:24:55

标签: javascript html

    <script>
            function checkName(){
                var tmpName = document.getElementById("name");
                if( tmpName.value.length == 0 ){
                    alert( "Name cannot be empty" );
                    return false;
                }
                else
                    return true;
            }


            function confirmForm( formObj ){
                var nameBool = new Boolean();
                var errorName = "";


                nameBool = checkName();

                if( nameBool == false )
                    errorName = "Invalid data in input name !";

                return window.alert( "You have this error : \n " + errorName + "\n" + errorID ); 
            }

</script>
<form name=reviewform onsubmit="return confirmForm(reviewForm)" method=POST >
            <p>Name : <input type="text" id="name" ></p>

            <p>ID   : <input type="text" id="id" ></p>

            <input type="submit" value="Click here!">
</form>

我的问题是为什么我的功能无法运行???是不是错了?任何高年级的人都可以教我哪里错了吗?

我已编辑并加上表单名称和功能如何工作

我不知道是不是我的执行错误或什么

1 个答案:

答案 0 :(得分:1)

这两个功能,虽然它们需要一些工作,你显然需要了解你的JS知识,可以运行,你只需要调用它们。就目前而言,您刚刚定义了2个功能。没别了。

其他问题,行/行:

//second line:
var tmpName = document.getElementById("name");

在这里,你不能确定这个元素是否已被引导,或者DOM还没有准备好,所以要小心,只需将整个代码包装在一个处理程序中:

window.onload = function()
{
    //your code here, this gets executed after the page is fully loaded
};

接下来,don't think of JS as some sort of Java-for-browsers, it's a completely different animal。像:

var nameBool = new Boolean();
var errorName = "";

最好写为声明变量,但不指定任何内容:

var nameBool, errorName;

如果你想确定nameBool是一个布尔值,只需这样指定:

nameBool = !!checkName();//double bang

您似乎也在尝试验证表单或处理各种提交事件。为什么不使用addEventListener呢?或者,如果你坚持:

document.getElementById('formId').onsubmit = function(e)
{
    //get event object:
    e = e || window.event;
    //this references form, as does (e.target || e.srcElement), you can access the elements it contains, and check them one by one
};