如何在Javascript中从多维数组中获取元素

4

我用document.create("input")填充了我的数组。我想将它们打印到屏幕上,但是我无法获取mainArr[i][j]元素。当我console.log()它时,它打印undefined,但在作用域之外,则会得到我期望的结果。我已经尝试过以下方法:

for (var i = 0; i < mainArr.length; i++) {

                var p = document.createElement('P');

                for (var j = 0; j < mainArr[i].length; j++) { 

                    element = mainArr[i][j];

                    p.appendChild(element);
                }
                $('#keyPad').append(p);
            }

我期望得到这个输出:
<p>
                <input type="button" class="sil" value="C" style="width:50px">
                <input type="button" class="hepsiniSil" value="AC" style="width:50px">
            </p>
            <p>
                <input type="button" class="buttons" value="7">
                <input type="button" class="buttons" value="8">
                <input type="button" class="buttons" value="9">
                <input type="button" class="buttons" value="*" >
            </p>
            <p>
                <input type="button" class="buttons" value="4">
                <input type="button" class="buttons" value="5">
                <input type="button" class="buttons" value="6">
                <input type="button" class="buttons" value="-">
            </p>
            <p>
                <input type="button" class="buttons" value="1">
                <input type="button" class="buttons" value="2">
                <input type="button" class="buttons" value="3">
                <input type="button" class="buttons" value="+">
            </p>
            <p>
                <input type="button" class="buttons" value="0">
                <input type="button" value="=" style="width:50px" onclick='esittir()'>
                <input type="button" class="buttons" value="/">

            </p>

下面有这个内容:
$(document).ready(function () {

        var butArr = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '+', '-', '*', '/', '=', 'C', "AC"];
        var mainArr = [];           


            $('.createBut').click(function () {

                var but = document.createElement("input");

                var butClass = $('#inputClass').val();
                var butValue = $('#inputValue').val();
                var butRow = $('#inputRow').val();
                var butColumn = $('#inputColumn').val();
                var butWidth = $('#inputWidth').val();
                var butHeigth = $('#inputHeigth').val();
                var butClick = $('#inputClick').val();

                but.type = 'button';
                but.value = butValue;
                but.className = butClass;
                but.style.width = butWidth;
                but.style.height = butHeigth;
                //but.onclick = butClick;

                for (var i = 0; i < 17; i++) {
                    mainArr[butRow] = [];
                    for (var j = 0; j < 17; j++) {
                        mainArr[butRow][butColumn] = but;

                    }
                }

});

请分享您的 mainArr 内容。 - P.S.
我分享了 @CommercialSuicide 。 - Emin Çiftçi
你没有正确填充你的2D按钮数组。此外,你必须为每个数组单元创建一个单独的按钮元素,否则你将会多次添加相同的按钮,这将导致在父级下只有一个它最后添加的按钮。 - Redu
1个回答

0

您的代码有错误 - 您使用了:

mainArr[butRow][butColumn] = but;

butRowbutColumn不会改变

这应该可以解决你的问题:

for (var i = 0; i < 17; i++) {
    mainArr[i] = [];
    for (var j = 0; j < 17; j++) {
        var but = document.createElement("input");
        but.type = 'button';
        but.value = butValue;
        but.className = butClass;
        but.style.width = butWidth;
        but.style.height = butHeigth;
        mainArr[i][j] = but;
    }
}

但是,我从用户那里获取行和列,并应该将按钮放置在这些索引处。我的意思是,我不按顺序填充数组。我根据用户给我的索引进行填充。 - Emin Çiftçi
那么为什么你需要循环呢?它基本上会做17*17次相同的事情。 - pwolaq
例如,用户想要在第1行第2列上放置“3”按钮,为此我认为需要循环17次,即按钮数量。 - Emin Çiftçi
那部分运行正常,我首先询问的是第一部分。在那里我尝试添加P元素。 - Emin Çiftçi
console.log(mainArr[0][0]); console.log(mainArr[0][1]); console.log(mainArr[1][0]);我执行了这些代码,第一个输出的是undefined,其他的都正常。 - Emin Çiftçi
mainArr[butRow] = []; mainArr[butRow][butColumn] = but;好的,我更改了那部分代码,但是 console.log(mainArr[0][0]); 仍然未定义。 - Emin Çiftçi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接