我在函数外部声明了一个3 X 3矩阵作为2D数组,函数本身找到了数组的行列式。单击时,提交按钮将执行行列式功能。但是当我在函数外部声明数组时,它返回NaN。当我在函数中声明它时,它工作正常。 P.S。:这是我的第一个JavaScript程序。 [源代码的相关部分] [1]
<!DOCTYPE html>
<html>
<body>
<h1> Solving Matrices </h1>
<form>
<label for="11"> 1,1 </label>
<input type="text" name="txt11" id = "11">
<label for="12"> 1,2 </label>
<input type="text" name="txt12" id = "12">
<label for="13"> 1,3 </label>
<input type="text" name="txt13" id = "13"><br>
<label for="21"> 2,1 </label>
<input type="text" name="txt21" id = "21">
<label for="22"> 2,2 </label>
<input type="text" name="txt22" id = "22">
<label for="23"> 2,3 </label>
<input type="text" name="txt23" id = "23"><br>
<label for="31"> 3,1 </label>
<input type="text" name="txt31" id = "31">
<label for="32"> 3,2 </label>
<input type="text" name="txt32" id = "32">
<label for="33"> 3,3 </label>
<input type="text" name="txt33" id = "33"><br><br>
<input type="submit" value="submit" onclick = "det3()"><br>
<p id = "output"> Output here </p>
</form>
<script>
var matrix =
[
[parseInt(document.getElementById("11").value), parseInt(document.getElementById("12").value), parseInt(document.getElementById("13").value)],
[parseInt(document.getElementById("21").value), parseInt(document.getElementById("22").value), parseInt(document.getElementById("23").value)],
[parseInt(document.getElementById("31").value), parseInt(document.getElementById("32").value), parseInt(document.getElementById("33").value)] ];
function det3 ()
{
var det = matrix[0][0]*(matrix[1][1]*matrix[2][2]-matrix[1][2]*matrix[2][1]) - matrix[0][1]*(matrix[1][0]*matrix[2][2]-matrix[1][2]*matrix[2][0]) + matrix[0][2]*(matrix[1][0]*matrix[2][1]-matrix[1][1]*matrix[2][0]);
alert(det);
}
</script>
</body>
</html>
答案 0 :(得分:1)
这是因为如果你将它定义为全局变量,你的脚本会在加载html后立即触发,因此每个元素的值都是NaN,如果你做了一个console.log(document.getElementById(&#34; 11&#34;)。价值)你将看不到任何印刷品。 你只想在单击按钮时获取值,这样最好在函数内部定义矩阵变量,或者如果你真的想让它变成全局的话,可以这样做。
<script>
console.log(document.getElementById("11").value)
var matrix =[];
function det3 ()
{
matrix =[
[parseInt(document.getElementById("11").value), parseInt(document.getElementById("12").value), parseInt(document.getElementById("13").value)],
[parseInt(document.getElementById("21").value), parseInt(document.getElementById("22").value), parseInt(document.getElementById("23").value)],
[parseInt(document.getElementById("31").value), parseInt(document.getElementById("32").value), parseInt(document.getElementById("33").value)] ];
var det = matrix[0][0]*(matrix[1][1]*matrix[2][2]-matrix[1][2]*matrix[2][1]) - matrix[0][1]*(matrix[1][0]*matrix[2][2]-matrix[1][2]*matrix[2][0]) + matrix[0][2]*(matrix[1][0]*matrix[2][1]-matrix[1][1]*matrix[2][0]);
alert(matrix);
}
</script>
&#13;