|
|
|
| Подскажите какой нужен код чтобы
Умножить число с ячейки таблицы на заданное число (которое в одной ячейке на всю таблицу т.е. для всех строк будет одинаковым но вводится только в первой строке таблицы) и вывести результат в соседней ячейке, такую операцию нужно выполнить для каждой строки таблицы.
Подскажите пожалуйста рабочий код. | |
|
|
|
|
|
|
|
для: lexa8652
(02.06.2017 в 13:51)
| | Таблицу свою показывать надо, а не заставлять догадываться в какой ячейке число общее для всех и прочее. | |
|
|
|
|
|
|
|
для: confirm
(03.06.2017 в 18:02)
| | <table style="width: 235px;">
<tbody>
<tr>
<td style="width: 186px;">наименование</td>
<td style="width: 29px;">цена</td>
<td style="width: 10px;">
<p>произведение</p>
<p>цены на число</p>
</td>
</tr>
<tr>
<td style="width: 186px;" colspan="3">
<p>Ячейка с число которое нужно умножить</p>
<p>на ячейки цены</p>
4</td>
</tr>
<tr>
<td style="width: 186px;">название 1</td>
<td style="width: 29px;">10</td>
<td style="width: 10px;"> </td>
</tr>
<tr>
<td style="width: 186px;">название 2</td>
<td style="width: 29px;">20</td>
<td style="width: 10px;"> </td>
</tr>
<tr>
<td style="width: 186px;">название 3</td>
<td style="width: 29px;">30</td>
<td style="width: 10px;"> </td>
</tr>
</tbody>
</table> | |
|
|
|
|
|
|
|
для: lexa8652
(04.06.2017 в 22:13)
| | И чем является эта таблица? И когда делать этот расчет, при загрузке страницы? Сдается мне, что вы не то считаете. | |
|
|
|
|
|
|
|
для: confirm
(05.06.2017 в 02:40)
| | Задача простая. У меня есть товар но он в долларах, а нужно вывести в рублях.
Хочу в таблицу добавить товар в долларах, а в соседней ячейке выводить посчитанную цену в рублях, а курс доллара в таблице вводить вручную
Расчет что бы считался при загрузке страницы.
Спасибо за помощь | |
|
|
|
|
|
|
|
для: lexa8652
(06.06.2017 в 18:27)
| | Обычно это делается так (если без перезагрузки страницы):
элемент выводящий цену товара содержит в своем атрибуте и цену в другой (других) валюте. Пользователь может изменить валюту либо глобально для всех товаров, например, через меню выбора валюты (этот выбор можно запомнить), либо отразить цену в другой (других) валюте только для конкретного товара, например при наведении мыши на цену товара.
У вас же слишком все запутано получается. | |
|
|
|
|
|
|
|
для: confirm
(06.06.2017 в 18:36)
| | У меня нет возможности сделать так как у вас описано (такое у меня реализовано в карточке товара но в прайсе нет такой возможности). У меня это прайс товара и он создан просто в табличной форме. Есть возможность реализовать таблицу как я выше описывал? | |
|
|
|
|
|
|
|
для: lexa8652
(06.06.2017 в 23:24)
| | Можно
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<table style="width: 235px;">
<tbody>
<tr>
<td style="width: 186px;">наименование</td>
<td style="width: 29px;">цена, $</td>
<td style="width: 10px;">цена, руб.</td>
</tr>
<tr>
<td style="width: 186px;" colspan="3" id="usd">
56.5131393
</td>
</tr>
<tr>
<td style="width: 186px;">название 1</td>
<td style="width: 29px;">10</td>
<td style="width: 10px;"> </td>
</tr>
<tr>
<td style="width: 186px;">название 2</td>
<td style="width: 29px;">20</td>
<td style="width: 10px;"> </td>
</tr>
<tr>
<td style="width: 186px;">название 3</td>
<td style="width: 29px;">30</td>
<td style="width: 10px;"> </td>
</tr>
</tbody>
</table>
<script>
var usd = parseFloat(document.querySelector('#usd').innerHTML);
[].slice.call(document.querySelector('table').rows, 2).forEach(function(tr) {
tr.cells[2].innerHTML = Math.round(tr.cells[1].innerHTML * usd); //или с десятичными значениями до двух (tr.cells[1].innerHTML * usd).toFixed(2);
})
</script>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: confirm
(07.06.2017 в 08:52)
| | Спасибо!!! Все работает супер | |
|
|
|
|
|
|
|
для: confirm
(07.06.2017 в 08:52)
| | Подскажите пожалуйста, что нужно изменить в скрипте чтобы добавить пару колонок с лева от колонки цены в $ | |
|
|
|
|
|
|
|
для: lexa8652
(07.06.2017 в 21:56)
| | Что значит добавить? У вас это некая автономная html страница, если судить по описанию, в которую вы вручную добавляете курс валют. Кстати, выгоднее его помещать не в ячейку таблицу, удалив ее вообще, а непосредственно в js-код:
var usd = parseFloat(document.querySelector('#usd').innerHTML);
var usd = 56.5131393; //здесь указываем текущий курс валюты
|
А коли так, открывайте свою страницу в html редакторе и модифицируйте таблицу как хотите. Хотя можно и программно добавлять ячейки в таблицу, но вряд ли они вам нужны пустые, а значит чтобы программно их и заполнить, для этого скрипту нужно определить и данные для них. Но если определяем, то наверное уж лучше в редакторе сделать все.
А после модификации нужно будет подправить код. В цикле код получает из коллекции ячеек текущей строки таблицы конкретные ячейки по их индексу. Индекс ячеек начинается с 0. То есть
tr.cells[2].innerHTML = Math.round(tr.cells[1].innerHTML * usd);
означает
значение ячейки 3 (индекс 2) = значению ячейки 2 (индекс 1) умноженному на курс валюты. | |
|
|
|
|
|
|
|
для: confirm
(08.06.2017 в 11:42)
| | Спасибо за детально развернутый ответ | |
|
|
|
|
|
|
|
для: lexa8652
(08.06.2017 в 23:23)
| | Если наряду с добавлением ячеек удалите и строку таблицы с курсом валюты, определяя ее непосредственно в скрипте, то нужно еще сделать небольшую правку. Циклом осуществляется проход не по всем строкам таблицы (коллекция rows), а начиная с третьей (они также имеют индексы начиная с 0), так как первая, это заголовок, а вторая с курсом валюты. Для этого из всей коллекции строк берется срез, начиная с третьей. Если удалить строку с курсом валют, то нужно брать срез начиная со второй. Для этого нужно изменить только индекс с 2 на 1 в этой строке кода:
[].slice.call(document.querySelector('table').rows, 1).forEach(function(tr) { | |
|
|
|
|
|
|
|
для: confirm
(09.06.2017 в 01:30)
| | Подскажите, а можно вместо ручного ввода курса валюты сделать автоматический, что бы он подгружался (изменялся) автоматически? | |
|
|
|
|
|
|
|
для: lexa8652
(13.06.2017 в 17:21)
| | Если непосредственно с этой страницы, то данные о курсе можно получить только в том случае, если запрашиваемый ресурс передает соответствующий заголовок разрешающий доступ к его данным. В противном случае доступ к ним браузер заблокирует.
Если же исполнять не из под веб страницы, то можно запросить текущий курс и с ЦБ РФ. В среде Windows можно запустить эту страницу как приложение. Для этого достаточно добавить в нее соответствующие теги и сменить расширение на .hta. В таком режиме все ограничения снимаются и можно будет подключать и выполнять даже системные библиотеки. Поэтому без проблем или посредством Ajax, или просто используя IFRAME можно будет получить текущий курс валюты с любого ресурса. | |
|
|
|
|
|
|
|
для: confirm
(13.06.2017 в 18:39)
| | Все это сложно для моего понимания. Наверно придется оставить ручной ввод курса валют. | |
|
|
|
|
|
|
|
для: lexa8652
(16.06.2017 в 12:41)
| | Запрашиваемый сервер должен давать разрешение заголовком Access-Control-Allow-Origin, в противном случае из под веб страницы браузер заблокирует доступ к нему. Данный запрашиваемый ресурс разрешает, поэтому с него асинхронным запросом получается курс валюты, раз в сутки.
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<style>
table {
border-collapse: separate;
font: 13px Arial;
}
th, td {
padding: 4px 8px;
border: 1px solid #bbb;
}
th {
background: #ccc;
}
em {
font-weight: normal;
font-size: 12px;
}
</style>
</head>
<body>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<table>
<tr>
<th>Наименование</th>
<th>Цена, <em>$</em></th>
<th>Цена, <em>руб.</em></th>
</tr>
<tr>
<td>название 1</td>
<td>10</td>
<td></td>
</tr>
<tr>
<td>название 2</td>
<td>20</td>
<td></td>
</tr>
<tr>
<td>название 3</td>
<td>30</td>
<td></td>
</tr>
</table>
<script>
var mem = localStorage, //хранилище
now = new Date().toISOString().substr(0, 10);
if(mem.curdate==undefined) { //курс по умолчанию
mem.curdate = '2017-06-10';
mem.current = 56.5131
}
if(mem.curdate != now) { //если в хранилище курс не текущей даты, то запрашиваем курс
var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://query.yahooapis.com/v1/public/yql?q=select+*+from+yahoo.finance.xchange+where+pair+=+%22USDRUB%22&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys');
xhr.onload = function() {
if (xhr.status == 200) {
try { //сохраняем курс
now = JSON.parse(xhr.responseText).query;
mem.curdate = now.created.substr(0, 10);
mem.current = now.results.rate.Rate
} catch (e) {}
}
convert()
}
xhr.send()
} else convert();
function convert() {
[].slice.call(document.querySelector('table').rows, 1).forEach(function(tr) {
tr.cells[2].innerHTML = Math.round(tr.cells[1].innerHTML * mem.current);
})
}
</script>
</body>
</html>
</body>
</html>
|
| |
|
|
|
|
704.6 Кб |
|
|
для: confirm
(03.06.2017 в 18:02)
| | Вот фото как выглядит таблица | |
|
|
|