[英]JavaScript: Can I declare a variable by querying which function is called? (Newbie)
我正在嘗試修改一個現有的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也會同樣更改,但也會更改。
我完全不知所措。
這很丑陋,但是您可以通過使用全局變量isDonation解決此問題。 在添加項的開頭將其設置為false,在添加時將其設置為true。 然后,在writeitems函數中,您可以檢查該值並將其用於調節輸出。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.