私はデータベースから情報を集めるためにphpでビルドされたテーブルを持っています。これらの中で、私はクリックされると、estimatedCostの値を取得し、それを計算し、チェックされたすべてのオブジェクトの実行中の合計を保持するJavaScript関数にスローするチェックボックスを持っています。Javascriptによる詳細チェックボックス
私がしようとしているのは、すべてのチェックを作成し、必要な変数を他のJavaScript関数に引き渡すすべてのオプションを選択解除することです。
これは、タイトルの横にチェックボックスを表示します。
foreach($replace as $key => $value)
{
$jScript = 'onclick=\'calcTotals("'.$replace[$key]['estimatedCost'].'","'.$replace[$key]['optionItem_id_replaceOrRepair'].'","'.$replace[$key]['service_title'].'","'.$replace[$key]['maintenanceitem_id'].'");\'';
$checkbox = sprintf('<input type="checkBox" name="ids[]" id="%s" value="%s" %s>', $replace[$key]['maintenanceitem_id'], $replace[$key]['maintenanceitem_id'], $jScript).' ';
$replace[$key]['title'] = $checkbox.$replace[$key]['title'];
$replace[$key]['estimatedCost'] = $replace[$key]['estimatedCost'];
}
これは、現在はすべてをチェックして、すべてのリンクのチェックを外している:私はJavaScriptで持って
今echo '<a href="#" onClick=\'setCheckboxes("budgeting", true); return false;\'>Check All</a> | ';
echo '<a href="#" onClick=\'setCheckboxes("budgeting", false); return false;\'>Uncheck All</a>';
現在の機能:
function setBudgetCheckboxes(the_form, do_check) {
var elts = (typeof(document.forms[the_form].elements['ids[]']) != 'undefined')
? document.forms[the_form].elements['ids[]']
: (typeof(document.forms[the_form].elements['ids[]']) != 'undefined')
? document.forms[the_form].elements['ids[]']
: document.forms[the_form].elements['ids[]'];
var elts_cnt = (typeof(elts.length) != 'undefined')
? elts.length
: 0;
if (elts_cnt) {
for (var i = 0; i < elts_cnt; i++) {
elts[i].checked = do_check;
var name = document.getElementById(name);
} // end for
} else {
elts.checked = do_check;
} // end if... else
return true;
}
そして、他の、ハンドル一度に1つずつクリック:
function calcTotals(amount, type, service, name) {
if(amount[0] == '$') {
amount = amount.substr(1,amount.length);
}
var id = type+"_"+service+"_selected";
var grand_id = "Grand_selected";
var grand_service_id = "Grand_"+service+"_selected";
var type_id = type+"_selected";
var checked = document.getElementById(name).checked;
var multiplier = -1;
if(checked) {
multiplier = 1;
}
amount = amount * multiplier;
addBudgetValue(amount, id);
addBudgetValue(amount, grand_id);
addBudgetValue(amount, grand_id+"_h");
addBudgetValue(amount, type_id);
addBudgetValue(amount, grand_service_id);
addBudgetValue(amount, grand_service_id+"_h");
}
function addBudgetValue(amount, id) {
var current_value = document.getElementById(id).innerHTML;
var curtmp = 0;
if(current_value == "$0") {
current_value = amount;
}
else {
curtmp = parseFloat(current_value.substr(1,current_value.length));
current_value = (curtmp+parseFloat(amount));
}
var newVal = "$"+Number(current_value).toFixed(2);
if(newVal == "$0.00")
newVal = "$0";
document.getElementById(id).innerHTML = newVal;
}
これは問題です:すべてをチェックしてすべてのボックスをチェックし、その情報をcalcTotals関数に渡して値が正しく追加されるようにするにはどうすればよいですか?
上記のコードをすべて手作業で解釈するのではなく、現在の「すべてをチェックする」方法から見ている動作を説明することで、より簡単にできますか? jQueryについてよく知っていますか? – JellicleCat
一度に1つずつチェックボックスをオンにすると、現在のランニングコストにestimatedCostの値が追加され、ページのフローティングテーブルに表示されます。アイテムの選択と選択解除に応じて上下に移動します。すべてのチェックボックスをオンにするとすべてのチェックボックスがオンになりますが、すべての費用は加算されません。(副作用として、チェックボックスを手動で選択解除すると、コストが負になり始めます。) – IceBlueFire