1

JavaScriptから保存するユーザー入力がたくさんあります。一度に 1 つずつ割り当てるのではなく、入力を保存するカウンターをループするのが好きです。これは要素 ID を指定する正しい構文ですか? この時点では機能しておらず、たとえば catMaxInput: [Exception: ReferenceError: catMaxInput is not defined] と不平を言っています。

var catInput = [], catMaxInput = [], catCostSFHR = [],  catOccHRStart=[], catOccHREnd =[];
        var z = 1;
        for (var i=0; i<3; i++){
            catMaxInput[i] = (Math.round(parseFloat(document.getElementById("cat\"" + z + "\"Max").value))); 
            z++;
        }

        for (var c=0; c<3; c++){
            catTotalArea[c] = (Math.round(parseFloat(document.getElementById("cat\"" + z + "\"TotalArea").value)));
            z++;
        }

これまでのところ、これは次の形式です。

<tr>
          <td>CAT 1</td>
          <td><input name="data1Max4" type="text" id="cat1Max" value="20" /></td>
          <td><input name="data1Max7" type="text" id="cat1TotalArea" value="50,000 SF" /></td>
          <td><input name="data1Max10" type="text" id="cat1CostSFHR" value="$ 100.00" /></td>
          <td><input name="data1Max13" type="text" id="cat1OccHRStart" value="6:00am" /></td>
          <td><input name="data1Max16" type="text" id="cat1OccHREnd" value="12:00pm" /></td>
        </tr>
        <tr>
          <td>CAT B</td>
          <td><input name="data2Max5" type="text" id="cat2Max" value="70" /></td>
          <td><input name="data2Max8" type="text" id="cat2TotalArea" value="20,000 SF" /></td>
          <td><input name="data2Max11" type="text" id="cat2CostSFHR" value="$ 50.00" /></td>
          <td><input name="data2Max14" type="text" id="cat2OccHRStart" value="12:00pm" /></td>
          <td><input name="data2Max17" type="text" id="cat2OccHREnd" value="8:00pm" /></td>
        </tr>
        <tr>
          <td>CAT C</td>
          <td><input name="data3Max6" type="text" id="cat3Max" value="100" /></td>
          <td><input name="data3Max9" type="text" id="cat3TotalArea" value="30,000 SF" /></td>
          <td><input name="data3Max12" type="text" id="cat3CostSFHR" value="$ 0.00" /></td>
          <td><input name="data3Max15" type="text" id="cat3OccHRStart" value="8:00pm" /></td>
          <td><input name="data3Max18" type="text" id="cat3OccHREnd" value="6:00am" /></td>
        </tr>
4

2 に答える 2

4

の結果は、 between"cat\"" + i +"\"Max"の値を持つ文字列です。i"

おそらく、これを にする必要があります"cat" + i +"Max"

必要のない場所に二重引用符をエスケープして追加しています。

var catInput = [], catMaxInput = [], catCostSFHR = [],  
                                             catOccHRStart=[], catOccHREnd =[];

for (var i=0; i<3; i++){
  catMaxInput[i] = (Math.round(parseFloat(
                            document.getElementById("cat" + i +"Max").value))); 
}

for (var c=0; c<3; c++){
  catTotalArea[c] = (Math.round(parseFloat(
                      document.getElementById("cat" + c+  "TotalArea").value)));
}
于 2012-08-09T18:17:07.120 に答える
3

交換:

getElementById("cat\"" + i +"\"Max")
getElementById("cat\"" + c+  "\"TotalArea")

と:

getElementById("cat"+i+"Max")
getElementById("cat"+c+"TotalArea")

更新:ES6では次のことができます:

getElementById(`cat${i}Max`)
getElementById(`cat${c}TotalArea`)

これを行うには、次のようなより良い方法があります。

javascriptでテーブルの行とセルを反復処理するにはどうすればよいですか?

于 2012-08-09T18:18:52.097 に答える