简体   繁体   English

第一次迭代后,for循环的JavaScript似乎退出或卡住了

[英]Javascript for loop seems to exit or get stuck after the first iteration

I have a contact us form that i want to check with javascript before submitting it to php. 我有联系我们的表格,我想在将其提交给php之前使用javascript进行检查。 so when i call the function verify(), by placing alert("hello")'s throughout the code, i determined that it was exiting after the first iteration of the second loop. 因此,当我通过在整个代码中放置alert(“ hello”)来调用函数verify()时,我确定它在第二个循环的第一次迭代之后退出。 does anyone know why? 有人知道为什么吗?

Heres my html form code: 这是我的html表单代码:

<div id="errortext">
</div>
<form id="contact" method="post" action="contact.php">
    <h2>Contact Us</h2>
    <h1>Fields marked with a * are required</h1>
    <p>Full Name*</p>
    <input type="text" class="single" placeholder="Full Name" name="name" id="name" /><br />
    <p>E-Mail Address*</p>
    <input type="text" class="single" placeholder="E-Mail Address" name="email" id="email" /><br />
    <p>Phone Number</p>
    <input type="text" class="single" placeholder="Phone Number" name="number" id="number" /><br />
    <p>Subject</p>
    <input type="text" class="single" placeholder="Subject" name="subject" id="subject" /><br />
    <p>Message*</p>
    <textarea placeholder="Message" name"message" id="message"></textarea><br />
    <input type="button" id="submitb" onclick="verify()" value="SEND" />
</form>

and heres my javascript code: 这是我的JavaScript代码:

<script type="text/javascript">
    function verify()
    {
        var rgood = true, nrgood = true;
        var name = document.getElementById("name");
        var email = document.getElementById("email");
        var phone = document.getElementById("number");
        var subject = document.getElementById("subject");
        var message = document.getElementById("message");
        var error = document.getElementById("errortext");

        var relements = new Array(name, email,  message);
        var nrelements = new Array(phone, subject);

        var relementsng = new Array;
        var nrelementsng = new Array;
        var relementsngp = new Array;
        var nrelementsng = new Array;

        for (var x = 0; x < relements.length; x++)
        {
            if (relements[x].value == "")
            {
                rgood = false;
                relementsng.push(relements[x]);
                relementsngp.push(relements[x].placeholder);
            }
        }

        for (var y = 0; y < nrelements.length; y++)
        {
            if (nrelements[y].value == "")
            {
                nrgood = false;
                nrelementsng.push(nrelements[y]);
                nrelementsngp.push(nrelements[y].placeholder);
            }
        }
        alert("hello");
        if (!rgood)
        {
            error.textContent = "All required fields are not filled out! These fields must be filled out: " + nrelementsngp.toString() + "!";
        }
    }
</script>

Your code is all right except this typo : 除此错字外,您的代码还可以:

line23: nrelementsngp.push(nrelements[x].placeholder);
                    ^
line31: nrelementsngp.push(nrelements[y].placeholder);
                    ^


On my browser, the error message below was shown. 在我的浏览器上,显示以下错误消息。

 "ReferenceError: Can't find variable: nrelementsngp" 

Hope this helps. 希望这可以帮助。

    var relementsng = new Array;
    var nrelementsng = new Array;
    var relementsngp = new Array;
    var nrelementsng = new Array; // <<---- Change this line to

To

    var nrelementsngp = new Array;

Because 因为

for (var y = 0; y < nrelements.length; y++){
    if (nrelements[y].value == ""){
        nrgood = false;
        nrelementsng.push(nrelements[y]);
        nrelementsngp.push(nrelements[y].placeholder); // This place is causing your script to crash
    }
}

The identifier nrelementsngp isn't declared. 未声明标识符nrelementsngp

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM