【问题标题】:I have an issue with making an array function in javascript我在 javascript 中创建数组函数时遇到问题
【发布时间】:2013-01-18 13:17:02
【问题描述】:

我制作了这个简单的购物车,您可以从下拉列表中选择数量,然后添加这些数字,然后您会得到所有产品的总数和产品本身的总数。

但我希望它写下价格和名称的数量并将其写在放置在网站上的 div 中,以便用户很容易看到他添加了产品。我通过将产品一一添加来进行计算部分,因为我没有排列它们。但是对于下一部分,我只是没有找到适合我需要的方法。这只是来自我的测试页面,所以我只有几个值,但在另一个页面中,我列出了 70 多个,如下所示:

<div id="radioAlert">
<script type="text/javascript">
//calculator
function updatesum() {
document.form.sum.value =
(document.form.sum0.value -0) *99 +
(document.form.sum1.value -0) *99 +
(document.form.sum2.value -0) *99;

document.form.smu.value =
(document.form.prod0.value -0)*99  +
(document.form.prod1.value -0) *99 +
(document.form.prod2.value -0) *99 +
(document.form.prod3.value -0) *99 +
(document.form.prod4.value -0) *99;
document.form.totalsum.value =
(document.form.sum.value -0) +
(document.form.smu.value -0); //not a typo i was just lazy with the name

//arrays

//This one i did not get to work.
var myArray = newArray();
myArray[0]=document.form.sum2.value;
myArray[1]=document.form.prod0.value;
myArray[2]=document.form.prod1.value;
myArray[3]=document.form.prod2.value;
myArray[4]=document.form.prod3.value;
myArray[5]=document.form.prod4.value;

for (var i = 0; i < myArray.length; i++) {
        alert(myArray[i]);
}


//this part works but i want it to add its value only once and then replace its value if its updated again, if its 0 i want it to be completely removed.

var prod1 = document.form.sum2.value;
var prod2 = document.form.sum1.value;

var radioAlert = document.getElementById("radioAlert");
var radioAlert2 = document.getElementById("radioAlert"); 

if  (document.form.sum2.value>0) {
//document.write("pilotjakke pelsforet small  " +   prod1 + "  stk");
radioAlert.innerHTML += ("pilotjakke pelsforet small  " +   prod1 + "  stk");
alert("pilotjakke pelsforet medium  " +   prod1 + "  stk");
}

if  (document.form.sum1.value>0) {
//document.write("pilotjakke pelsforet small  " +   prod1 + "  stk");
radioAlert2.innerHTML += ("pilotjakke pelsforet medium  " +   prod2 + "  stk");

}
}
</script>
</div>

【问题讨论】:

  • 很难说出你在问什么,你能在问题的某个地方清楚地说明你遇到的问题吗?
  • 是的,很抱歉。如果您选择“产品 1”并从下拉列表中选择一个数字,我希望将其写入页面“产品 1 小(数量)”到目前为止我管理的方式仅适用于一个变量,它要么覆盖以前声明没问题,但是当我在那里有第二个变量时,它们会相互覆盖,或者它会不确定地添加,所以我想创建一个数组,以便它适用于多个变量(例如 prod1,prod2 ...)跨度>

标签: javascript arrays variables shopping-cart


【解决方案1】:

JavaScript 中默认没有newArray 函数。

改变

var myArray = newArray();

var myArray = [];

var myArray = new Array();
// Note space ---^

通常首选使用[] 的形式。除了更简洁之外,它还不容易有人重新定义 Array 构造函数。

请注意,如果您愿意,也可以使用元素初始化数组:

var myArray = [
    document.form.sum2.value,
    document.form.prod0.value,
    document.form.prod1.value,
    document.form.prod2.value,
    document.form.prod3.value,
    document.form.prod4.value
];

【讨论】:

  • 谢谢,这很有道理!但是我仍然对该循环有问题,该循环检查每次值大于或等于它是否将某些内容写入特定位置。当我使用 for (i=0;i<myarray.length document.write>"); } </myarray.length>
  • @Tommy:循环数组的代码很好,只要你在某处声明i。请注意,您不能在页面加载后使用document.write(它会隐式使用document.open,它会清除页面上的所有内容)。
  • Crowder 愚蠢的问题,但我将在哪里/如何声明“我”?是的,我改用innerHTML,但是我尝试过的一些脚本很奇怪,document.write实际上可以在页面上运行:s
  • @Tommy:在你使用它的函数中声明i,通过var i。有关为什么这很重要的更多信息,请参阅我的博客文章 The Horror of Implicit Globals。回复document.write,只要它是在页面加载期间使用的,而不是之后,它基本上会按您的预期工作。不过最好避免它。
  • 仍然无法正常工作:/这部分有问题还是其他地方有问题? (我尝试了 Alert 命令但没有工作)var radioAlert = document.getElementById("radioAlert"); var i; var myArray = [ document.form.sum2.value, document.form.prod0.value, document.form.prod1.value, document.form.prod2.value, document.form.prod3.value, document.form.prod4.value ]; for (i=0; i &lt; myArray.length;i++); { radioAlert.innerHTML = (myArray[i] + "&lt;br&gt;"); }
猜你喜欢
  • 2021-07-08
  • 1970-01-01
  • 2013-03-05
  • 2023-03-20
  • 2014-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多