【问题标题】:How can I efficiently define a variable based on multiple user choices?如何根据多个用户选择有效地定义变量?
【发布时间】:2013-04-30 07:01:35
【问题描述】:

我正在为一家公司网站编写一个程序,该程序允许他们在电话上进行报价,这个过程他们已经手动完成了一段时间。他们卖的东西之一是屋顶的脊帽。此商品的价格由用户做出的 4 个决定决定。

  1. 客户定价级别,有 3 个选择(单选按钮)
  2. 条件,2 种选择(平面或雕刻,下拉框)
  3. 颜色,有4种选择(下拉框)
  4. 宽度,有14种选择(下拉框)

到目前为止,我已经用一个巨大的 If...else if 语句定义了这个变量,该语句超过 1000 行代码。问题是大多数产品都是一样的,按照这个速度,我需要几个月才能完成。我将在下面发布我的 HTML,然后是脚本。提前感谢任何可以提供帮助的人。 (注意:我只发布了我认为有助于解决我的问题的代码,假设我知道周围的标签,如表格等)

用于颜色选择的 HTML...(每种颜色都会改变价格)

<td><form name="form2" method="post" action="">
<label for="color"></label>
<select name="color" id="color">
 <option value="galvanized">galvanized</option>
 <option value="galvalume">galvalume</option>
 <option value="metallic copper">metallic copper</option>
 <option value="red">red</option>// there are many painted colors which is why i use "else" for this price change.
</select>
</form>

用于修剪的HTML...(条件和宽度的选择)

<td>Ridge:</td>
<td><select id="ridgeChoice" name="ridgeChoice">
<option value="Sculpted">Sculpted</option>
<option value="Flat">Flat</option>
</select>&nbsp;Qty:
<input id="ridgeTrim" type="text" value="" size="3">&nbsp; Width:<select id="ridgeWidth" name="ridgeWidth">
<option value="13">13"</option>
<option value="16">16"</option>
<option value="18">18"</option>
<option value="20">20"</option>
<option value="22">22"</option>
<option value="24">24"</option>
<option value="26">26"</option>
<option value="28">28"</option>
<option value="30">30"</option>
<option value="32">32"</option>
<option value="34">34"</option>
<option value="36">36"</option>
<option value="38">38"</option>
<option value="40">40"</option>
</select>
</td>

价格水平的 HTML 只是一个带有三个选项的单选组,这些选项也会影响价格。

Javascript...

var ridgeChoice=document.getElementById("ridgeChoice").value;
var ridgeWidth=document.getElementById("ridgeWidth").value;

var ridgePrice;
if (ridgeChoice=="Sculpted")
{
if (retailPrice.checked)
{
    if (ridgeWidth=="13")
        {
            if(colorChoice=="galvalume")
            {
                ridgePrice=14.70;
            }
            else if (colorChoice=="metallic copper")
            {
                ridgePrice=19.55;
            }
            else if (colorChoice=="galvanized")
            {
                ridgePrice=13.35;
            }
            else
            {
                ridgePrice=16.65;
            }
        }
                   else if (ridgeWidth=="16")
        {
            if(colorChoice=="galvalume")
            {
                ridgePrice=21.30;
            }
            else if (colorChoice=="metallic copper")
            {
                ridgePrice=29.50;
            }
            else if (colorChoice=="galvanized")
            {
                ridgePrice=20.5;
            }
            else
            {
                ridgePrice=22.90;
            }
        }

这持续了 1000 行。有没有更好的方法来根据许多不同的用户选择来定义变量?

【问题讨论】:

  • 您是否考虑过将定价存储在 XML 文件中并使用 javascript 进行查找?在不使用服务器端语言的情况下,无论哪种方式进行设置都将耗费大量时间。
  • 我一直在尝试另一种使用二维数组的方法,它更干净但仍然很长,您推荐哪种服务器端语言对这种情况很有用。
  • 无论您选择哪种服务器端语言,都需要将数据存入数据库。我不确定您目前如何拥有数据,如果它在 Excel 中,您通常可以将其上传到数据库表中。 PHP 和 ASP.NET 都是流行的基于 Web 的项目

标签: javascript html variables loops if-statement


【解决方案1】:

为什么不把选择和价格放在属性文件中。由于属性文件适用于键值对,您只需要从用户选择中获取相应的键,并从属性中获取对应的价格。这也将允许您不对价格和颜色进行硬编码。您可以在 html 中创建下拉列表,然后使用 javascript 填充它。您可以在 java 文件中设置属性文件读取逻辑,该文件可以在您的 javascript 中引用。

您的属性文件可能如下所示:

galvalume=14.70
galvanized=13.35

希望对你有帮助!

【讨论】:

  • 如何制作属性文件?
  • 我认为你假设我编写 Java,我只使用过 javascript。
  • 在任何地方都没有提到服务器端代码。如果他没有任何服务器端代码,这对他根本不起作用。
  • @ABBryan 您无法读取 java 脚本中的属性文件,因为它是客户端并且文件必须在服务器端。
  • 是的,所以我只想使用客户端来执行此操作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-24
  • 2020-06-24
  • 1970-01-01
  • 2020-03-24
  • 1970-01-01
相关资源
最近更新 更多