javascript - 将变量值从 if 语句传递到 if/else 之外

标签 javascript jquery

当用户选中我的复选框之一时,我需要实时更新我的​​“calculated_price”值。 Alert() 可以正常工作并计算,但我不知道为什么它只显示“0”而不改变。

$(document).ready(function () {
    //Global Configurations.
    var calculated_price = 0;
    var final_price = "قیمت نهایی برابر است با " + calculated_price + " تومان ";

    // Menu Items.
    var cbSelector = $("[name='cb[]']");
    cbSelector.change(function () {
        if (this.checked){
            var currentCBSelected = $(this);
            var currentCBValue = parseInt(currentCBSelected.val());

            var previousNSelected = $(this).prev("input");
            var previousNValue = parseInt(previousNSelected.val());

            previousNSelected.css("visibility","visible");

            calculated_price += currentCBValue * previousNValue;
        }
        else {
            // Do somethings.
        }

    });

    // Calculated Price.
    $("#calculated_price").html(final_price);

});

这是我的index.html 文件,它将选中复选框以显示数字输入,其值可以更改(因此计算的价格必须更改)

    <!-- Page Logo -->
    <div>
        <a href="#time_picker"><img id="page_logo" src="img/logo.png"></a>
    </div>

    <!-- Time Picker -->
    <div id="time_picker">
        <div id="time_picker_in">
            <p>زمان ورود: </p>
        </div>
        <div id="time_picker_out">
            <p>زمان خروج: </p>
        </div>
    </div>

    <!-- Menu Items -->
    <div>
        <ul id="menu_items">
            <li>
                <input type="number" name="n[]" value="1" class="num_input"/>
                <input type="checkbox" name="cb[]" value="12000" />
                <label for="text1">چای و ساید کیک</label>
            </li>
            <li>
                <input type="number" name="n[]" value="1" class="num_input"/>
                <input type="checkbox" name="cb[]" value="5000" />
                <label for="text2">چای سیاه</label>
            </li>
            <li>
                <input type="number" name="n[]" value="1" class="num_input"/>
                <input type="checkbox" name="cb[]" value="7000" />
                <label for="text3">چای سبز</label>
            </li>
            <li>
                <input type="number" name="n[]" value="1" class="num_input"/>
                <input type="checkbox" name="cb[]" value="7000" />
                <label for="text4">چای و خرما</label>
            </li>
            <li>
                <input type="number" name="n[]" value="1" class="num_input"/>
                <input type="checkbox" name="cb[]" value="7000" />
                <label for="text5">چای و نبات</label>
            </li>
            <li>
                <input type="number" name="n[]" value="1" class="num_input"/>
                <input type="checkbox" name="cb[]" value="7000" />
                <label for="text6">چای و دارچین</label>
            </li>
            <li>
                <input type="number" name="n[]" value="1" class="num_input"/>
                <input type="checkbox" name="cb[]" value="15000" />
                <label for="text7">آبمیوه(پرتقال،هندوانه،طالبی)</label>
            </li>
            <li>
                <input type="number" name="n[]" value="1" class="num_input"/>
                <input type="checkbox" name="cb[]" value="15000" />
                <label for="text8">هات چاکلت</label>
            </li>
            <li>
                <input type="number" name="n[]" value="1" class="num_input"/>
                <input type="checkbox" name="cb[]" value="15000" />
                <label for="text9">نسکافه</label>
            </li>
            <li>
                <input type="number" name="n[]" value="1" class="num_input"/>
                <input type="checkbox" name="cb[]" value="15000" />
                <label for="text10">کاپوچینو</label>
            </li>
            <li>
                <input type="number" name="n[]" value="1" class="num_input"/>
                <input type="checkbox" name="cb[]" value="15000" />
                <label for="text11">شکلات گلاسه</label>
            </li>
            <li>
                <input type="number" name="n[]" value="1" class="num_input"/>
                <input type="checkbox" name="cb[]" value="15000" />
                <label for="text12">سالاد روز</label>
            </li>
            <li>
                <input type="number" name="n[]" value="1" class="num_input"/>
                <input type="checkbox" name="cb[]" value="10000" />
                <label for="text13">سیب زمینی</label>
            </li>
            <li>
                <input type="number" name="n[]" value="1" class="num_input"/>
                <input type="checkbox" name="cb[]" value="15000" />
                <label for="text14">غذای روز کودک</label>
            </li>
            <li>
                <input type="number" name="n[]" value="1" class="num_input"/>
                <input type="checkbox" name="cb[]" value="10000" />
                <label for="text15">بستنی(12 اسکوپ)</label>
            </li>
        </ul>
    </div>

    <!-- White Space -->
    <div id="white_space"></div>

    <!-- Calculated Price -->
    <div id="calculated_price"></div>

最佳答案

问题似乎是您期望对calculated_price变量的更改自动反射(reflect)在您的final_price字符串中,但事实并非如此。每次calculated_price变量发生变化时,您都必须将其插入到final_price字符串中,然后再次更新html。

更改此行:

var final_price = "قیمت نهایی برابر است با " + calculated_price + " تومان ";

至:

var final_price = "قیمت نهایی برابر است با {calc} تومان ";

在 if 语句末尾添加此行:

$("#calculated_price").html(final_price.replace("{calc}", calculated_price.toString());

并将最后一行更改为:

$("#calculated_price").html(final_price.replace("{calc}", calculated_price.toString());

关于javascript - 将变量值从 if 语句传递到 if/else 之外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46351491/

相关文章:

javascript - node.js 获取相对于文件的项目/src 路径

javascript - 获取外部url图片

jquery - 在媒体查询断点之间设置动画

jquery - 在嵌套内容之后设置光标位置可编辑

jquery - 如何使用AJAX解析JQuery中 "success"回调方法返回的对象

jquery - 当 Asterisk 或更大的运算符开始一个元素时

javascript - 从 .gpx 文件导入坐标并使用 Google Maps API 显示的最佳方式

javascript - 将数组传递给函数

javascript - iframe 在动态创建后无缘无故消失

jquery - 如何将背景图像 div 居中?