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"> 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'> 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>