Я пытаюсь извлечь данные из динамической таблицы с помощью JQuery, но каждый путь, который я пробовал, превращает значения во что-то другое (ниже код вернет «l» вместо N/AI ожидал. Я пробовал использовать .each и .map как функцию, а также .val .html и, как вы можете видеть .text, чтобы вытащить данные. Я зациклен на том, почему и что я делаю неправильно. было бы весьма признателен.JQuery получить значения из таблицы html
HTML
<table id="attendees" class="attendees">
<thead>
<tr style="border-bottom: double;border-color: #007fff" ;="">
<th>Full Name</th>
<th>Membership Type</th>
<th>Membership Expiration Date</th>
<th>Free Vouchers</th>
<th>Classes From Pack Remaining</th>
<th>Yelp Check in</th>
<th>Payment Option</th>
<th>Remove</th>
</tr>
</thead>
<tbody>
<tr class="data">
<td>Students Name</td>
<td>N/A</td>
<td>N/A</td>
<td>0</td>
<td>0</td>
<td>Yes</td>
<td>
<ul id="list">
<select id="payment" name="payment">
<option>Cash/Credit</option>
<option>Free Voucher</option>
<option>Yelp Check-in</option>
</select>
</ul>
</td>
<td>
<div><a href="#" class="remove"><p>Remove</p></a>
</div>
</td>
</tr>
</tbody>
</table>
JQuery
$("#submit").live('click', function (e) {
$("#attendees tr.data").map(function (index, elem) {
var x = $(this);
var cells = x.find('td');
var $data = cells.text();
//alert($data[1]);
if ($data[1] == "N/A") {
alert(true);
}
});
e.preventDefault();
});
Окончательное решение
Благодаря первую очередь всем, кто вмешался, я честно узнал кое-что от каждого лица отвечать. В конце концов, это то, о чем я остановился ниже. Оглядываясь назад, я, вероятно, должен был дать более подробное описание того, что я пытался выполнить. Который должен был сканировать несколько строк данных и делать что-то на основе информации, найденной в каждой строке. Для этого мне пришлось отделить функции tr
и td
.each
. Это позволило мне сканировать ряд за строкой и получать отдельные данные.
Еще раз спасибо за помощь каждого особенно @TechHunter
$("#submit").on('click', function (e) {
e.preventDefault();
$("#attendees tbody tr").each(function(i) {
var $data= [];
var x = $(this);
var cells = x.find('td');
$(cells).each(function(i) {
var $d= $("option:selected", this).val()||$(this).text();
$data.push($d);
});
if ($data[1] == "N/A") {
doSomething();
}
});
});
спасибо, мне нравится ваш упрощенный подход. Хотя для получения значения для раскрывающегося списка я должен был использовать: выбранный как в var $ data = $ ("option: selected", this) .val() || $ (this) .text(); Проблема, которую я имею сейчас, заключается в том, что когда я пытаюсь получить доступ к каждому отдельному значению из var, как в данных [0], я получаю только первый возвращаемый символ. что, конечно, не помогает в выражении if –
@SteveBeaty вам не нужно извлекать ': selected', поскольку функция' .val() 'уже делает это за вас. и жаль, что я полностью пропустил вашу мысль о данных здесь, вы проверяете мое обновление – TecHunter
Hey @TecHunter Проверьте мое редактирование на исходное сообщение. Я не мог получить это далеко, без вашего вклада. Хотя я должен был сохранить этот вариант: выбранный в коде, на его поверхности я понимаю, почему я не должен этого нуждаться, но, честно говоря, он не работал без него. Возможно, ошибка ... В любом случае еще раз спасибо за вашу помощь. –