Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Преобразовать таблицу в многомерный массив (https://javascript.ru/forum/jquery/62090-preobrazovat-tablicu-v-mnogomernyjj-massiv.html)

Liza_rub 24.03.2016 09:34

Преобразовать таблицу в многомерный массив
 
Здравствуйте, помогите пожалуйста.
Имеется таблица, в которой можно менять количество строк и столбцов. в каждой ячейке таблице имеется текстовая форма. Нужен скрипт, который
из этой таблице получает,многомерный массив.
$(".um_matr").click(function(){
				var tr = $("#A_matr").find("tr");
                    for(var i=0;i<tr.length;i++)
                    {
                        var td = tr.eq(i).find("td");
                        A_Table[i] = new Array()
                        for(var j=0;j<td.length;j++)
                        {
                            A_Table[i][j] = td.eq(j).find("input").val();
                            
                            //alert(td.eq(j).find("input").val());
                        }
						
                    } 
					alert(A_Table)
				})

но почему то возвращает одномерный массив(

рони 24.03.2016 09:46

Liza_rub,
пример таблицы и пример результата который хотите получить?

Liza_rub 24.03.2016 10:00

<div class="matr" id="A_matr">
			
			<table border="0" cellpadding="" cellspacing="10">
				<form class="first_matr">
				<tr>
					<td><input type="text" oninput="testinput(this);" value=""></td>
					<td><input type="text" oninput="testinput(this);" value=""></td>
				</tr>
				<tr>
					<td><input type="text" oninput="testinput(this);" value=""></td>
					<td><input type="text" oninput="testinput(this);" value=""></td>
				</tr>
				<tr>
					<td><input type="text" oninput="testinput(this);" value=""></td>
					<td><input type="text" oninput="testinput(this);" value=""></td>
				</tr>
				<tr>
					<td><input type="text" oninput="testinput(this);" value=""></td>
					<td><input type="text" oninput="testinput(this);" value=""></td>
				</tr>
				</form>
				
			</table>
			
		
		</div>

результат, например [[1,2],[3,4],[5,6],[7,8]]

рони 24.03.2016 10:52

Liza_rub,
не правильный у вас бутерброд (form)
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">

  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>

  <script>
 $(function() {
    $("input").on("input", function() {
        var a = $.map($("tr"), function(a) {
            return [$.map($("input", a), function(a) {
                return +a.value
            })]
        });
        $("p").text(JSON.stringify(a))
    }).trigger("input")
});
  </script>
</head>

<body>   <p></p>
<div class="matr" id="A_matr">
          <form class="first_matr">
			<table border="0" cellpadding="" cellspacing="10">

				<tr>
					<td><input type="text"  value="1"></td>
					<td><input type="text"  value="2"></td>
				</tr>
				<tr>
					<td><input type="text"  value="3"></td>
					<td><input type="text"  value="4"></td>
				</tr>
				<tr>
					<td><input type="text"  value="5"></td>
					<td><input type="text"  value="6"></td>
				</tr>
				<tr>
					<td><input type="text"  value="7"></td>
					<td><input type="text"  value="8"></td>
				</tr>


			</table>
           </form>

		</div>

</body>

</html>

laimas 24.03.2016 13:31

Цитата:

Сообщение от Liza_rub
результат, например [[1,2],[3,4],[5,6],[7,8]]

Зачем же его формировать, а не именовать поля надлежащим образом и отправить формой, думаю что в итоге это же для сервера готовится?


Часовой пояс GMT +3, время: 06:56.