Javascript-форум (https://javascript.ru/forum/)
-   Работа (https://javascript.ru/forum/job/)
-   -   Нужен скрипт вычитания цены со скидкой для DLE (https://javascript.ru/forum/job/67472-nuzhen-skript-vychitaniya-ceny-so-skidkojj-dlya-dle.html)

WebMachine 19.02.2017 16:27

Нужен скрипт вычитания цены со скидкой для DLE
 
Всем привет.. В общем есть сайт: http://molodechnomebel-kavkaz.ru/cat1/

Он на CMS: DLE

Сам скрипт прописан в shortstory и выглядит это так:
<script type="text/javascript">
window.onload = function calc{news-id}() { <!-- window.onload нужна чтобы функция выполнялась без onload в body -->
var a = parseInt(document.getElementById('num1').innerHTML);
var b = parseInt(document.getElementById('num2').innerHTML);
var c = Math.round(a-(a*b/100));
document.getElementById('num3').innerHTML=c;
}
</script>

<h3>{title}</h3>
<font id="num1">[xfvalue_p1]</font> * <font id="num2">20%</font> = <font id="num3"></font>

Но в таком варианте он выводит только итоговую сумму первой новости..
Я применил тег PHP-шаблонизатора движка DLE {news-id} чтобы название функций скрипта были у каждой новости свои. И получил к каждой новости отличительный скрипт.. Но в таком виде высчитывается сумма со скидкой первой новости.. А нужно чтобы высчитывалась сумма со скидкой у всех новостей.

Далее я попробовал прописать тот же {news-id} в id. Выглядет это так:

<script type="text/javascript">
window.onload = function calc{news-id}() { <!-- window.onload нужна чтобы функция выполнялась без onload в body -->
var a = parseInt(document.getElementById('num{news-id}1').innerHTML);
var b = parseInt(document.getElementById('num{news-id}2').innerHTML);
var c = Math.round(a-(a*b/100));
document.getElementById('num{news-id}3').innerHTML=c;
}
</script>

<h3>{title}</h3>
<font id="num{news-id}1">[xfvalue_p1]</font> * <font id="num{news-id}2">20%</font> = <font id="num{news-id}3"></font>


Но итоговая сумма со скидкой так в обще не вычисляется нигде..

Если я все правильно понял, нужен способ без onload в body но с возможностью задать имя функции.. А затем приписать к этому имени например : function calc{news-id} // чтобы у каждого скрипта в краткой новости были разные имена. Чтобы функции срабатывали одновременно.

И так. В чем моя ошибка? И кто её решит?

Цель заключается в том чтобы вывести цену со скидкой в каждой новости.. Прописав сам скрипт в shortstory.tpl и без onload в body.

Почему именно скриптом? для того чтобы не лезть в базу каждый раз..

Но заранее прошу попытаться сделать это у себя.. дабы вероятность была 100%.

Напишите кто готов и сколько это будет стоить..

WebMachine 19.02.2017 19:53

<html>
<head>
<title>Готово</title>
</head>
<body>
<script type="text/javascript">
window.addEventListener('DOMContentLoaded', function() {
var elems = document.querySelectorAll('.news-price');
for(var i = 0, fonts; i < elems.length; i++) {
fonts = elems[i].getElementsByTagName('font');
fonts[2].textContent = Math.floor(parseFloat(fonts[0].textContent) * (100 - parseFloat(fonts[1].textContent))/100);
}
});
</script>
<span class="news-price"><font>[xfvalue_p1]</font> * <font>20%</font> = <font></font></span>
</body>
</html>

WebMachine 19.02.2017 19:53

готово


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