【发布时间】:2012-03-20 17:20:55
【问题描述】:
我正在使用我正在尝试修改的现有 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=新数组; var 购物车=新数组; 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 也同样会更改,但也会通用。
我完全不知所措。
【问题讨论】:
-
你不应该有两个相同函数,但我认为你的意思是几乎相同。就是说,你能创建一个fiddle,同时具有函数和一些最小的html吗?
-
我真的对 JavaScript 编程一无所知。我可以对现有代码进行简单的、非编程的调整,但恐怕此时我已经超出了我的能力范围。
标签: javascript function variables