带字符串的总和字符串

时间:2016-03-24 08:27:27

标签: javascript php jquery

我有一个全局变量:

var a;

我将onclick函数放入我的html div中连接 PHP

$number =' <div onclick="select(this,'."'250000'".');" > ';
$number .= ...etc...  //php function
$number .='</div>';

将字符串插入div值onclick(按钮):

function select (price){
if ($(id).attr('class') == "table2") { //unselect button
    $(id).attr('class', 'table1');
    var price2=document.getElementById("price").value.split(",");
    var removePrice = price;;
    var price3 = jQuery.grep(price2, function (value) { return value != removePrice;});
    document.getElementById("price").value = price3;
    if (n.length == 0) i = 0;
} else {
    $(id).attr('class', 'table2'); //select button
    if (i == 0) {
        document.getElementById("price").value = price;
        a = Number(document.getElementById("price").value); //assign the value into a
        i = 1;  
    } else {
        $(id).attr('class','table3');
    }  
}

从那里,我有复选框 HTML

<div id="CourseMenu"><input type="checkbox" value="50000" />&nbsp Ekstra Bed <input type="checkbox" value="50000"  />&nbsp Breakfast</div>

之后我有另一个函数来加总2 div值(复选框):

$(function($) {
  var sum = 0;
  $('#CourseMenu :checkbox').click(function() { sum = 0;
    $('#CourseMenu :checkbox:checked').each(function(idx, elm) {
        sum += parseInt(elm.value, 10);
    });
    var b  = parseInt(a||0, 10) + parseInt(sum||0, 10); 
    $('#sum').html(b); //<--resulted NaN when sum with button
    document.getElementById("price").value=b; //<-- assign b as div value
  });
});

目的是将总价格(按钮和复选框)合计为div值

<input type="hidden" id="price" name="price" value="" />

当函数只加上复选框时,它工作正常,但当我尝试用按钮(全局变量)显示总和时,它导致NaN

我想我已经将字符串转换为数字,我的代码有问题吗?

2 个答案:

答案 0 :(得分:0)

我认为你在onclick事件中传递参数时遇到问题: 的onclick = “选择(这一点, '250000');” =&GT;将此作为第一个参数传递尝试更改为onclick =“select('250000')”;

但是你的select函数期望string作为第一个参数:

function select(price){ //<-- simplified
   document.getElementById("price").value=price;
   a = Number(document.getElementById("price").value); 
}

答案 1 :(得分:0)

以下是您的X / Y问题的实际解决方案。

代码将初始化字段并单击按钮或选中复选框独立工作。

function calc() {
  var sum = parseInt($("#price").text(), 10);
  $('#CourseMenu :checkbox:checked').each(function() {
    sum += parseInt(this.value, 10);
  });
  $('#sum').val(sum);
}
$(function() {
  $("#CourseMenu .btn").on("click", function() {
    $("#price").text($(this).data("price")); // using the data attribute
    calc(); 
  });
  $('#CourseMenu input:checkbox').on("click",function() { 
    calc(); // 
  });
  calc(); // initialise in case the page is reloaded.
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<form id="CourseMenu">
  <button type="button" class="btn" data-price="25000">25000</button>
  <button type="button" class="btn" data-price="35000">35000</button>
  <div id="price">0</div>

  <br/>
  <label>
    <input type="checkbox" value="200" />200</label>
  <label>
    <input type="checkbox" value="300" />300</label>
  <label>
    <input type="checkbox" value="400" />400</label>
  <br/>
  <input type="text" id="sum" value="" />
</form>

PS:如果你没有点击复选框,你可以写

  $('#CourseMenu input:checkbox').on("click",calc);