Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么这个简单的函数不起作用_Javascript_Jquery_Html_Function_Variables - Fatal编程技术网

Javascript 为什么这个简单的函数不起作用

Javascript 为什么这个简单的函数不起作用,javascript,jquery,html,function,variables,Javascript,Jquery,Html,Function,Variables,为什么这不起作用?类似的代码在这里工作: 但这不起作用。我有正确的html代码。设置了ID,但每个ID都不同。它甚至没有给出0的输出来表示总计为0。没有显示任何值 <!-----SAMPLE INPUT ----> <input type="radio" autocomplete="off" id="pack11049" name="radio-73" value="1" onkeyup="updateTotal()"> <script languag

为什么这不起作用?类似的代码在这里工作:

但这不起作用。我有正确的html代码。设置了ID,但每个ID都不同。它甚至没有给出0的输出来表示总计为0。没有显示任何值

<!-----SAMPLE INPUT ---->
<input type="radio" autocomplete="off" id="pack11049" name="radio-73" value="1"     
onkeyup="updateTotal()">


<script language="javascript">
function updateTotal() {

 var optionsPrice = 0;
 var accompPrice = 0;

function checkOptions() {       
if (document.getElementById('pack11049').checked) {
    optionsPrice += 1049;
    }

if (document.getElementById('pack21199').checked) {
    optionsPrice += 1199;
    }

if (document.getElementById('pack31199').checked) {
    optionsPrice += 1199;
    }

if (document.getElementById('pack41299').checked) {
    optionsPrice += 1299;
    }
if (document.getElementById('pack61499').checked) {
    optionsPrice += 1499;
    }
if (document.getElementById('pack71549').checked) {
    optionsPrice += 1549;
    }
if (document.getElementById('pack81699').checked) {
    optionsPrice += 1699;
    }
if (document.getElementById('pack91799').checked) {
    optionsPrice += 1799;
    }
if (document.getElementById('pack101999').checked) {
    optionsPrice += 1999;
    }
if (document.getElementById('pack112499').checked) {
    optionsPrice += 2499;
    }
if (document.getElementById('pack122549').checked) {
    optionsPrice += 2549;
    }
} // end of checking for Package


function checkAccomp() {

if (document.getElementById('howmany').value == '1') {
    accompPrice += 129;
    }

if (document.getElementById('howmany').value == '2') {
    accompPrice += 258;
    }

if (document.getElementById('howmany').value == '3') {
    accompPrice += 1057;
    }   

if (document.getElementById('howmany').value == '4') {
    accompPrice += 1856;
    }   

} // end of check accomp function

 checkPackage();
 checkAccomp();

 var totalPrice = optionsPrice + accompPrice;
 document.getElementById('optionsPrice').innerHTML = "$ " + optionsPrice;
 document.getElementById('accompPrice').innerHTML = "$ " + accompPrice;
 document.getElementById('totalPrice').innerHTML = "$ " + totalPrice;


 } // end of my main update total function
 </script>
我想试试这个:

$formorder:input[type=radio].eachfunction{ $this.bind'change',函数{ 检查选项; }; }; var checkOptions=函数{ var合计=0; var pack=parseInt$'input[name=pack]:选中“order”.val; var accomp=parseInt$'input[name=accomp]:选中,'order'.val; 如果!isNaNpack total+=包装; 如果!isNaNaccomp total+=accomp; $'total'.texttotal; $'title'.text$'input[name=pack]:选中“,”订单“.attr'title”; }; 包裹 包1 包2 包3 包4 包5 容纳 1. 2. 3. 4. 总数:0 标题: 我想试试这个:

$formorder:input[type=radio].eachfunction{ $this.bind'change',函数{ 检查选项; }; }; var checkOptions=函数{ var合计=0; var pack=parseInt$'input[name=pack]:选中“order”.val; var accomp=parseInt$'input[name=accomp]:选中,'order'.val; 如果!isNaNpack total+=包装; 如果!isNaNaccomp total+=accomp; $'total'.texttotal; $'title'.text$'input[name=pack]:选中“,”订单“.attr'title”; }; 包裹 包1 包2 包3 包4 包5 容纳 1. 2. 3. 4. 总数:0 标题: 我将重写checkOptions和checkAccomp函数,并使用此模式删除所有这些if语句:创建一个存储每个复选框id及其对应价格的对象,然后使用带有键值查找的for-in循环,如下所示:

var OptionPricing = {     

    'pack11049': 1049,
    'pack21199': 1199,
    'pack31199': 1199,
    'pack41299': 1299,
    'pack61499': 1499
};

var AccompPricing = {

    0: 0,
    1: 129,
    2: 258,
    3: 1057,
    4: 1856 
};

function checkOptions() {

    var Price = 0;

    for (Packs in OptionPricing) {

        if ($('#' + Packs).is(':checked')) {           
            Price += OptionPricing[Packs];
        }
    }

    return Price;
}

function checkAccomp() {

    var Accomp = parseInt($('#HowMany').val(), 10);

    return AccompPricing[Accomp];
}

function updateTotal() {

    var ThePrice = checkOptions() + checkAccomp();

    $('#TotalPrice').text(ThePrice);
}

$(function () { $('.DoPricing').click(updateTotal); });
这是工作表。我没有将所有的ID和相应的价格添加到OptionPricing对象中,但是您知道了。此外,如果价格发生变化,或者添加了新的价格,那么这种模式应该更容易维护,更不用说代码会大大减少到几行,如果您喜欢简洁的语法,甚至可以进一步减少。我使用了jQuery问题中的标记,但是如果需要,您可以轻松修改它并使用纯js。

我将重写checkOptions和checkAccomp函数,并使用以下模式删除所有这些if语句:创建一个存储每个复选框id及其对应价格的对象,然后使用for in循环和键值查找,如下所示:

var OptionPricing = {     

    'pack11049': 1049,
    'pack21199': 1199,
    'pack31199': 1199,
    'pack41299': 1299,
    'pack61499': 1499
};

var AccompPricing = {

    0: 0,
    1: 129,
    2: 258,
    3: 1057,
    4: 1856 
};

function checkOptions() {

    var Price = 0;

    for (Packs in OptionPricing) {

        if ($('#' + Packs).is(':checked')) {           
            Price += OptionPricing[Packs];
        }
    }

    return Price;
}

function checkAccomp() {

    var Accomp = parseInt($('#HowMany').val(), 10);

    return AccompPricing[Accomp];
}

function updateTotal() {

    var ThePrice = checkOptions() + checkAccomp();

    $('#TotalPrice').text(ThePrice);
}

$(function () { $('.DoPricing').click(updateTotal); });


这是工作表。我没有将所有的ID和相应的价格添加到OptionPricing对象中,但是您知道了。此外,如果价格发生变化,或者添加了新的价格,那么这种模式应该更容易维护,更不用说代码会大大减少到几行,如果您喜欢简洁的语法,甚至可以进一步减少。我使用了jQuery,您在问题中有标记,但是您可以轻松地修改它,如果需要,可以使用纯js。

我可能会在这里说明明显的问题,但是第一个函数updateTotal缺少右大括号。如果您从源代码复制并粘贴,那么这可能是您的问题。当你盯着它看的时候,很容易被忽略-

我可能在这里说的是显而易见的,但是第一个函数updateTotal缺少右大括号。如果您从源代码复制并粘贴,那么这可能是您的问题。当你盯着它看的时候,很容易被忽略-

checkOptions和checkAccomp是在updateTotal中为Start定义的。它以什么方式不起作用?发生了什么事?你期望会发生什么?你真的打算使用onkeyup事件吗?@Phil Mulkins:Fiddle jsfiddle.net在将来会很好。另外,language属性已被弃用,应该用type=text/javascript或type=application/javascript替换。checkOptions和checkAccomp在updateTotal中以什么方式定义它不起作用吗?发生了什么事?你期望会发生什么?你真的打算使用onkeyup事件吗?@Phil Mulkins:Fiddle jsfiddle.net在将来会很好。另外,language属性已经被弃用,应该用type=text/javascript或type=application/javascript.Works替换。太好了!我要试试这个!非常感谢。好的,这里有一个关于javascript的问题。它工作得很好,但我不能让任何单选按钮上的值相同,因为将有多个具有相同价格的按钮,我正在使用该值标识每个包,以便我可以在处理页面上重写价格。换句话说,如果Pack==1,那么Pack 1=1099&Pack title=MVP套餐价格$1099如果Pack==2,那么Pack=1099&Pack title=Oceanview价格$1099如果1099是唯一的指示器,我如何在套餐之间进行标识?单选按钮名称区分各组。价值不是一个指标

如果这对您有帮助,请随意按向上箭头。谢谢,很好用!我要试试这个!非常感谢。好的,这里有一个关于javascript的问题。它工作得很好,但我不能让任何单选按钮上的值相同,因为将有多个具有相同价格的按钮,我正在使用该值标识每个包,以便我可以在处理页面上重写价格。换句话说,如果Pack==1,那么Pack 1=1099&Pack title=MVP套餐价格$1099如果Pack==2,那么Pack=1099&Pack title=Oceanview价格$1099如果1099是唯一的指示器,我如何在套餐之间进行标识?单选按钮名称区分各组。值不是指示器。如果这对您有所帮助,请随意按向上箭头。谢谢。这是我所需要的,因为值必须是唯一的,这样我可以在php处理页面上识别包。我会有多个相同价格的。这很有魅力!非常感谢。这很奇怪,我重新创建了您提供的整个脚本,它在JSFIDLE上运行得很好,但是当您在页面上选择某个内容时,它会说总数是NaN没有引号,只有NaN。。。。有什么建议吗?当我说Page时,我指的是我的wordpress Page.php文件。等等,我发现了问题!表单输入值的选项数量不是1、2、3和4。我以前换过。表单现在工作得很好!你是个摇滚明星!再次感谢你!如何在末尾添加一个美元符号、小数点和两个零?总价:$1493.00或总价:$1493.00加逗号?这更符合我的需要,因为该值必须是唯一的,以便我可以在php处理页面上识别包。我会有多个相同价格的。这很有魅力!非常感谢。这很奇怪,我重新创建了您提供的整个脚本,它在JSFIDLE上运行得很好,但是当您在页面上选择某个内容时,它会说总数是NaN没有引号,只有NaN。。。。有什么建议吗?当我说Page时,我指的是我的wordpress Page.php文件。等等,我发现了问题!表单输入值的选项数量不是1、2、3和4。我以前换过。表单现在工作得很好!你是个摇滚明星!再次感谢你!如何在末尾添加一个美元符号、小数点和两个零?总价:$1493.00或总价:$1493.00加逗号?