Я пытаюсь выполнить расчет с моей таблицей с помощью java-скрипта, но я не знаю, как зациклить его с остальной частью идентификатора. прямо сейчас я могу рассчитать только один элемент, как сделать это кратным, вот результат
поскольку вы можете видеть, что только идентификатор 1 получает результат, а идентификатор 2 равен нулю, как я могу сделать эту работу, вот мой java-скрипт
function calc(){
var n1 = parseFloat(document.getElementById('n1').value);
var n2 = parseFloat(document.getElementById('n2').value);
var oper = document.getElementById('result').value = n1*4+n2;
}
<table id = "my-table" class = "table table-hover table-bordered">
<thead>
<tr >
<th class = "text">NAME</th>
<th class = "text">A/P</th>
<th class = "text">H/W</th>
<th class = "text">Result</th>
</tr>
</thead>
<tbody>
@foreach($scores as $index => $score)
<tr>
<td>{{$score->lead->student_name}} <input type = "hidden" name = "scores[{{$loop->index}}][id]" value = "{{$score->id}}"></td>
<td style = "text-align:center"><input id = "n1" type = "text" name = "scores[{{$loop->index}}][jan_ap]" value = "{{$score->jan_ap}}" class = "input" autocomplete = "off"></td>
<td style = "text-align:center"><input id = "n2" type = "text" name = "scores[{{$loop->index}}][jan_hm]" value = "{{$score->jan_hm}}" class = "input" autocomplete = "off"></td>
<td style = "text-align:center"><input id = "result" type = "text" name = "scores[{{$loop->index}}][result]" value = "{{$score->result}}" class = "input" autocomplete = "off"></td>
</tr>
@endforeach
</tbody>
</table><div class = "form-group ">
<button onclick = "calc(); " type = "submit">Submit</button>
</div>
извините, попробуйте прочитать еще раз мой вопрос, изображение, которое я показываю вам, является результатом моего возвращения из моей таблицы, я пытаюсь вычислить каждый идентификатор внутри моей таблицы.
@Grace, когда вы говорите table, вы имеете в виду таблицу HTML или таблицу базы данных? Вы упомянули, что этот javascript находится в шаблоне лезвия. Если это так, возможно, вы неправильно подошли к решению этой проблемы. Кажется, вы пытаетесь прочитать значения из какого-то элемента DOM, но вам, вероятно, будет проще передать данные непосредственно в javascript в вашем шаблоне лезвия, см. Документацию здесь: laravel.com/docs/5.6/blade#displaying-data Вот и пример: приложение = @json ($ n1Value); </script> `
после расчета вы хотите отобразить его в текстовом поле результата?
да если возможно ..
затем сохраните его в моей БД, хе-хе
Прежде всего вам нужно удалить id = "n1", потому что вы можете назначить тот же идентификатор в цикле
если я удалю n1, как можно будет запустить расчет?
позвольте мне написать структуру таблицы
это связано с таблицей, которую мы делали последние несколько дней, можно ли использовать php внутри контроллера для вычислений вместо java?
Позвольте нам продолжить обсуждение в чате.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я отвечаю на это с помощью некоторых предположений, которые я сделаю, поскольку это не совсем ясно из вопроса.
Предположение 1: У вас есть эта таблица, отображаемая с помощью лезвия, которое откуда-то получает данные:
<div id = "myTabDiv">
<table name = "mytab" id = "mytab1">
<tr>
<td>col1 Val1 (has ID)</td>
<td>col2 Val2 (has jan_ap)</td>
<td>col3 Val3 (has jan_hm)</td>
<td>col4 Val4 (has result)</td>
</tr>
<tr>
<td>col1 Val1 (has ID)</td>
<td>col2 Val2 (has jan_ap)</td>
<td>col3 Val3 (has jan_hm)</td>
<td>col4 Val4 (has result)</td>
</tr>
Предположение 2: вы заполнили столбцы 1-3 значениями, но у вас есть волшебная кнопка, которая при нажатии вычисляет col4. Указанная кнопка использует функцию JS.
function calc(){
var table = document.getElementById("mytab1");
for (var i = 0, row; row = table.rows[i]; i++) {
//iterate through rows
//rows would be accessed using the "row" variable assigned in the for loop
for (var j = 0, col; col = row.cells[j]; j++) {
//iterate through columns
//columns would be accessed using the "col" variable assigned in the for loop
//here you can do things like saying sum col[1] + col[2] and then input result in col[3]
}
}
}
Да, сэр, предположение 2 верно, я обновлю свой вопрос ... см. Изображение
Я нацелен только на два столбца, которые являются jan_ap и jan_hm, затем заполняю вычисление для результата col .. возможно ли?
Из обсуждения в чате и кода вашего контроллера было обнаружено, что вы хотите добавить строку с некоторой формулой и сохранить результат в поле results в базе данных. Итак, здесь мы придумываем код
Метод сохранения контроллера
$scores = $request->input('scores');
foreach($scores as $row){
$score = Score::find($row['id']);
$score->jan_ap = $row['jan_ap'];
$score->jan_hm = $row['jan_hm'];
$score->result = round($row['jan_ap'] * 0.5) + ($row['result'] * 0.5);
$score->save();
}
Примечание. Удалите ввод текста результата из шаблона лезвия, потому что он больше не используется.
Да, абсолютный ответ php - это способ его вычислить и сохранить в базе данных, спасибо, MAster @rkj за помощь в решении этой проблемы .. и других, кто дал свой ответ ..
можешь переписать свой вопрос. Вы упоминаете table, но показываете нам api с json. Должен ли я сделать предположение, что вы используете json для создания таблицы с помощью лезвия? Хорошая идея прочитать: stackoverflow.com/help/how-to-ask