Как получить входное значение (без идентификатора) из таблицы - PullRequest
1 голос
/ 15 июня 2019

У меня есть тег ввода в таблице: пример:

<table border="1" id="datatable">
<thead>
    <tr>
        <th>a</th>
        <th>b</th>
        <th>c</th>
    </tr>
</thead>
<tbody>
    <tr>
        <td>
            <input type='text' name="a[]" value="a1">
        </td>
        <td>
            <input type='text' name="b[]" value="b1">
        </td>
        <td>
            <input type='text' name="b[]" value="c1">
        </td>
    </tr>
    <tr>
        <td>
            <input type='text' name="a[]" value="a2">
        </td>
        <td>
            <input type='text' name="b[]" value="b2">
        </td>
        <td>
            <input type='text' name="c[]" value="c2">
        </td>
    </tr>
</tbody>

Я хочу получить значение из ввода с использованием JavaScript.
У меня есть попытка:

var x = document.getElementById("datatable").rows[1].cells;
alert(x[1].innerHTML);

но результат:

<input type='text' value="a">

пожалуйста, помогите.спасибо

Ответы [ 3 ]

1 голос
/ 15 июня 2019

Это недействительный HTML. Каждый входной элемент должен иметь атрибут name, таким образом данные форм отправляются. Тогда вы можете использовать value=document.querySelector("input[name='fred']").value;

Редактировать Поскольку вы используете скобки (и, следовательно, отправляете обратно значение массива с тем же именем), вам нужно будет использовать:

// create array for values
a_s_array = [];
// get input values
a_s = document.querySelectorAll("input[name='a[]']");
// loop through elements
for( var x=0; x<a_s.length; x++ ) {
// store input value into array
   a_s_array.push( a_s[x].value );
}
0 голосов
/ 15 июня 2019

Вы можете попробовать этот код jquery:

<!DOCTYPE html>
<html>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>

</head>
<body>
<table border="1" id="datatable">
<thead>
    <tr>
        <th>a</th>
        <th>b</th>
        <th>c</th>
    </tr>
</thead>
<tbody>
    <tr>
        <td>
            <input type='text' name="a[]" value="a1">
        </td>
        <td>
            <input type='text' name="b[]" value="b1">
        </td>
        <td>
            <input type='text' name="b[]" value="c1">
        </td>
    </tr>
    <tr>
        <td>
            <input type='text' name="a[]" value="a2">
        </td>
        <td>
            <input type='text' name="b[]" value="b2">
        </td>
        <td>
            <input type='text' name="c[]" value="c2">
        </td>
    </tr>
</tbody>
<script>
    $(document).ready(function(){
        var td = $("#datatable").find('td');
        $.each(td, function() { 
            alert($(this).find('input[type="text"]').val()); 
        });
    });
</script>

</body>
</html>
0 голосов
/ 15 июня 2019

Попробуйте это: -

var x = document.getElementById("datatable").rows[1].cells;
alert(x[0].children[0].value);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...