Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.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_Arrays_Primes_Palindrome - Fatal编程技术网

Javascript:数组无法使用表单

Javascript:数组无法使用表单,javascript,arrays,primes,palindrome,Javascript,Arrays,Primes,Palindrome,我目前正在做一个程序,该程序将在一个新窗口中显示用户输入范围内的素数和回文素数,以下是我迄今为止的代码: <!DOCTYPE html> <html> <head> <meta charset = "utf-8"> <title> 9.25 Excercise </title> <script type = "text/javascript"> <!-

我目前正在做一个程序,该程序将在一个新窗口中显示用户输入范围内的素数和回文素数,以下是我迄今为止的代码:

<!DOCTYPE html>
<html>
    <head>
        <meta charset = "utf-8">
    <title> 9.25 Excercise </title>
    <script type = "text/javascript">
        <!-- Begin
        var arrayLength = (parseInt(form.endNum.value))-(parseInt(form.startNum.value));
        var num=new Array(arrayLength);
        var number1=parseInt(form.startNum.value);

        for (var y=0; y<arrayLength; y++){
            num[y] = number1;
            number1++;
            }

        function calculate1(form) {
        var newWindow = window.open("","Test","width=300,height=300,scrollbars=1,resizable=1");
        newWindow.document.write("Prime: <br> <br>");
        for (y=0; y<arrayLength; y++)
            if (num[y] == 1) {
                newWindow.document.write(num[y]);
            }
            for (var i=2;i<num[y];i++) {
                if (num[y] % i == 0) {
                    var prime="yes";
                    newWindow.document.write(num[y]);
                    break;
                }
            if (num[y] % i != 0) var prime="no";
            }
        }
        // End -->
    </script>
</head>
<body>  
    <form name=form>
        This Program finds Prime numbers and Palindromic numbers between two integers.<br>
        Maximum range between the integers is 999.<br>
        <hr />
        Starting Value (>0):  <input type="number" name="startNum" min="1" max="99999"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ending Value (<= 99999): <input type="number" name="endNum" min="1" max="99999"> <br>  <br>
        <input type=button value="Find Primes" onClick="calculate1(this.form)">
        <input type=button value="Find Palindromic Primes Only" onClick="calculate2(this.form)">
        <input type=button value="Find Both" onClick="calculate3(this.form)">
    </form>
</body>
我遇到的问题是,这些数字没有显示在窗口中,我不知道这是因为数组工作不正常还是我没有正确地写入窗口。目前,我可以让它显示数字1,但就是这样。我想要的数据也将进入数组。唯一的问题是在不破坏它的情况下,让素数(而不是1)显示在窗口中。请注意,这是一项正在进行的工作,目前我只需要在新窗口中显示素数的帮助

编辑:添加有关问题的更多信息

可能是您需要的

注:

由于将this.form作为参数传递,因此不能访问函数外部的form变量

当再次调用calculate_prime时,可以将下面的prime数组移到函数外部以跳过重新计算

最好使用body的onload事件或在使用javascript访问之前移动脚本,以确保正确呈现html节点


可能Javascript开头的注释会影响代码的行为。这不是您在JavascriptCheck浏览器控制台中的注释方式。你至少有3个错误。像parseIntform.endNum.value一样,表单没有定义,表单标记中缺少引号。此外,calculate1应该在var arraylenght之前开始。什么意思没有定义表单?@TheOniStixx您在var arrayleength=parseIntform.endNum.value中使用表单,但从未声明过var表单。好吧,尽管现在进行了所有这些更改,但如果范围从1到任何值,它只会显示数字1,否则它仍然不会显示任何内容只是将其转换为字符串,然后将其反转。。请参阅我答案第一行上面的链接。。
<!DOCTYPE html>
<html>
<head>
    <meta charset = "utf-8">
    <title> 9.25 Excercise </title>
    <script type = "text/javascript">
        //* <!-- Begin

        function calculate_prime(form) {
            var newWindow = window.open("","Test","width=300,height=300,scrollbars=1,resizable=1");
            var doc = newWindow.document;
            doc.write("Prime: <br> <br>");

            var nstart = parseInt(form.startNum.value);
            var nend = parseInt(form.endNum.value);

            // give initial prime numbers, more is better
            var prime = [2,3,5,7,11,13,17,19,23]; 

            // check with previous primes
            for(var z = prime[prime.length-1] + 2; z <= nend; z += 2) {
                var is_prime = true;
                // if current number divisible by previous primes
                for(var y = 1; y < prime.length; ++y) { 
                    // skip when divisor larger than half of z 
                    if(prime[y]>z/2) break; 
                    // if z divisible, then is not a prime
                    if(z%prime[y] == 0) { 
                        is_prime = false;
                        break;
                    }
                }
                // if a prime, add it to our array
                if(is_prime) {
                    prime.push(z);
                }
            }

            // print all primes within the range
            for (var z = 0; z<prime.length; ++z) {
                if(prime[z] < nstart) continue;
                doc.write(prime[z] + ' ');
            }
        }
        // End --> */
    </script>
</head>
<body>  
    <form name='form'>
        This Program finds Prime numbers and Palindromic numbers between two integers.<br>
        Maximum range between the integers is 999.<br>
        <hr />
        Starting Value (>0):  <input type="number" name="startNum" min="1" max="99999" value='1'> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ending Value (<= 99999): <input type="number" name="endNum" min="1" max="99999" value='99999'> <br>  <br>
        <input type=button value="Find Primes" onClick="calculate_prime(this.form)">
        <input type=button value="Find Palindromic Primes Only" onClick="calculate2(this.form)">
        <input type=button value="Find Both" onClick="calculate3(this.form)">
    </form>
</body>
</html>