1

行列式関数が機能しません。理由がわかりません。問題ないように思えます。誰か助けてください。

HTML

<div id = "table1">
            <div class = "header">Wyznacznik [2x2]</div>
                <form id = "row1">
                    <input type = "text" class = "det1"/><!--first row-->
                    <input type = "text" class = "det1"/>
                </form>
                <form id = "row2">
                    <input type = "text" class = "det1"/><!-- second row-->
                    <input type = "text" class = "det1"/>
                </form>
            <div class = "count"><a href = "#" onclick="det('det1','caclValue2')">Wylicz</a></div>
                <input type = "text" id = "calcValue2"/>
            </div>

JavaScript

function det(className,outputId){
var arr = document.getElementsByClassName(className);
var determinant = 0; 
if(arr.length == 2){
determinant = (arr[0].value*arr[3].value) - (arr[1].value*arr[2].value);
}
else if(arr.length == 3){
determinant = (arr[0].value*((arr[4].value*arr[8].value) - (arr[5].value *     arr[7].value))) - 
(arr[1].value*((arr[3].value*arr[8].value) - (arr[5].value * arr[6].value))) +
(arr[2].value*((arr[3].value*arr[7].value) - (arr[4].value * arr[6].value))); 
}
document.getElementById(outputId).value = determinant;
return determinant;
}

編集!: if ステートメントは arr.length == 4 でなければならず、そうでなければ arr.length == 9 でなければなりません。

4

1 に答える 1

0

配列の長さが 2 になるようにフィルターをかけますが、その後、それを超えるインデックスにアクセスしようとします。

if(arr.length == 2){
    determinant = (arr[0].value*arr[3].value) - (arr[1].value*arr[2].value);
}

他の if ステートメントについても同じです。コンソールで実際にエラーを確認しましたか?

于 2013-05-11T09:32:05.140 に答える