尝试在javascript中

时间:2015-11-18 22:17:29

标签: javascript jquery html

我正在做一个令我难过的愚蠢的小编码挑战。我试图获取一个关键值对的列表,如:

约翰:2

简:3

约翰:4

简:5

您的目标是汇总textarea中每个键的计数,并显示每个键的总数

HTML文档中的键。默认值应该是输出,"

的总和

约翰是6.简的总数是8。"

我试图在没有jquery或任何其他框架的情况下执行此操作这是我到目前为止所拥有的并且我不断获得NaN的价值。我的逻辑可能会逆转吗?

$(function() {
var keyStore = document.getElementById("keyValPairs");

if (!keyStore){
    alert("you suck DIE!!!!!");
}
var hashTable = {};

var str = split(",");
for( var entry in str){

    var a = entry.split(":")
    if(!hashTable.hasOwnProperty(a[0])){
        hashTable[a[0]] = 0;
    }
    hashTable[a[0]] += parseInt(a[1]);
}

console.log(obj);

});

我使用jquery函数来包装它,因为我不记得dom加载时常用的说法。

HTML:

  <div class="panel panel-primary">
<div class="panel panel-header">
    <h1>Sum up your key value pairs</h1>
</div>
<div class="panel panel-body">
    <div class="col-sm-6">
      <textarea class="preescreen-input" name="keyValPairs" id="keyValPairs" cols="30" rows="10">
        John : 2,
        Jane: 3,
        John : 4,
        Jane : 5,
      </textarea>
    </div>
    <div class="col-sm-2">
        <button class="btn btn-primary">Sum</button>
    </div>
    <div class="col-sm-2">
        <button class="btn btn-danger">
            Insert
        </button></br></br>
        <label for="inputBoxKey">Enter Key</label>
        <input type="text" id="inputBoxKey" name="inputBoxKey"></br></br>
        <label for="inputBoxVal">Enter Value</label>
        <input type=" text" id=inputBoxVal name="inputBoxVal">
    </div>
    <div class="col-2-offset-4 panel panel-footer">
        <input type="text ">
    </div>

   </div>

</div>

这只是我在网上找到的一个愚蠢的小编程挑战,但是它让我感到困惑。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

  1. 您正在调用split(",")而不给它分组
  2. 当您执行for( var entry in str)时,entry是关键,而不是str
  3. 中条目的值
  4. 您需要将sum按钮绑定到运行代码的函数
  5. 您应修剪字符串以删除空格
  6. 你应该确保名字有效并保释,否则(处理空行)
  7. 以下是包含这些更改的代码:

      <div class="panel panel-primary">
    <div class="panel panel-header">
        <h1>Sum up your key value pairs</h1>
    </div>
    <div class="panel panel-body">
        <div class="col-sm-6">
          <textarea class="preescreen-input" name="keyValPairs" id="keyValPairs" cols="30" rows="10">
            John : 2,
            Jane: 3,
            John : 4,
            Jane : 5,
          </textarea>
        </div>
        <div class="col-sm-2">
            <button class="btn btn-primary" onclick="sum()">Sum</button>
        </div>
        <div class="col-sm-2">
            <button class="btn btn-danger">
                Insert
            </button></br></br>
            <label for="inputBoxKey">Enter Key</label>
            <input type="text" id="inputBoxKey" name="inputBoxKey"></br></br>
            <label for="inputBoxVal">Enter Value</label>
            <input type=" text" id=inputBoxVal name="inputBoxVal">
        </div>
        <div class="col-2-offset-4 panel panel-footer">
            <input type="text ">
        </div>
    
       </div>
    
    </div>
    

    和js:

    window.sum = function() {
        var keyStore = document.getElementById("keyValPairs");
    
        if (!keyStore){
            alert("you suck DIE!!!!!");
        }
        var hashTable = {};
    
        var str = keyStore.value.split(",");
        for( var key in str){
            var entry = str[key].trim();
            var a = entry.split(":");
            if(a.length > 0) a[0] = a[0].trim();
            if(a.length > 1) a[1] = a[1].trim();
            if(a[0] == '') continue;
            if(!hashTable.hasOwnProperty(a[0])){
                hashTable[a[0]]=0;
            }
            hashTable[a[0]]+=parseInt(a[1]);
        }
        alert(JSON.stringify(hashTable));
    }