Я работаю с существующим модулем корзины на основе JavaScript, который пытаюсь изменить. Я не знаю JS и по разным причинам должен работать с тем, что уже есть.
Текст, отображаемый для моего поля количества, определен в существующей функции:
function writeitems() {
var i;
for (i=0; i<items.length; i++) {
var item=items[i];
var placeholder=document.getElementById("itembuttons" + i);
var s="<p>";
// options, if any
if (item.options) {
s=s+"<select id='options"+i+"'>";
var j;
for (j=0; j<item.options.length; j++) {
s=s+"<option value='"+item.options[j].name+"'>"+item.options[j].name+"</option>";
}
s=s+"</select> ";
}
// add to cart
s=s+"Quantity: <input id='quantity"+i+"' value='1' size='3'/> ";
s=s+"<input type='submit' value='Add to Cart' onclick='addtocart("+i+"); return false;'/></p>";
}
placeholder.innerHTML=s;
}
refreshcart(false);
}
У меня есть два разных типа поля ввода количества; один (пожертвования) должен быть снабжен знаком доллара, а один (предметы) должен быть пустым.
Я взял существующую функцию additem, скопировал ее и переименовал так, чтобы было две идентичные функции: одна для предметов и одна для пожертвований. Функция additem ниже:
function additem(name,cost,quantityincrement) {
if (!quantityincrement) quantityincrement=1;
var index=items.length;
items[index]=new Object;
items[index].name=name;
items[index].cost=cost;
items[index].quantityincrement=quantityincrement;
document.write("<span id='itembuttons" + index + "'></span>");
return index;
}
Есть ли способ объявить глобальную переменную, основанную на том, какая функция (additem или adddonation) вызывается, чтобы я мог добавить это в функцию writeitems, чтобы отображать или скрывать знак доллара по мере необходимости? Или есть лучшее решение?
Я не могу использовать HTML в теле страницы корзины из-за того, как она в данный момент кодируется, поэтому я полагаюсь на то, что JS позаботится об этом.
Любая помощь для новичка приветствуется. Спасибо!
ОБНОВЛЕНИЕ 3/22:
Хорошо, я отредактировал файл .js следующим образом:
var items = new Array;
var cart = new Array;
var isDonation = false;
function additem(name,cost,quantityincrement) {
var isDonation=false;
if (!quantityincrement) quantityincrement=1;
var index=items.length;
items[index]=new Object;
items[index].name=name;
items[index].cost=cost;
items[index].quantityincrement=quantityincrement;
document.write("<span id='itembuttons" + index + "'></span>");
return index;
}
function adddonation(name,cost,quantityincrement) {
var isDonation=true;
if (!quantityincrement) quantityincrement=1;
var index=items.length;
items[index]=new Object;
items[index].name=name;
items[index].cost=cost;
items[index].quantityincrement=quantityincrement;
document.write("<span id='itembuttons" + index + "'></span>");
return index;
}
...
function writeitems() {
var i;
for (i=0; i<items.length; i++) {
var item=items[i];
var placeholder=document.getElementById("itembuttons" + i);
var s="";
// options, if any
if (item.options) {
s=s+"<select id='options"+i+"'>";
var j;
for (j=0; j<item.options.length; j++) {
s=s+"<option value='"+item.options[j].name+"'>"+item.options[j].name+"</option>";
}
s=s+"</select> ";
}
// add to cart
if (!isDonation) {
s=s+"<input id='quantity"+i+"' size='3' type='hidden'/>";
s=s+"<input type='submit' value='Add to Cart' onclick='addtocart("+i+"); return false;'/><br /><br />";
}
else {
s=s+"$<input id='quantity"+i+"' size='3'/>.00 ";
s=s+"<input type='submit' value='Add to Cart' onclick='addtocart("+i+"); return false;'/><br /><br />";
}
placeholder.innerHTML=s;
}
refreshcart(false);
}
Полученная страница не различает функции additem и adddonation и является выходной. Изменение оператора if / else на isDonation = true изменяет все выходные данные универсально, а isDonation = false изменяет аналогично, но также и универсально.
Я в полной растерянности.