Горизонтальные и вертикальные сложные вычисления Javascript и Coldfusion - PullRequest
0 голосов
/ 31 июля 2009

Теперь таблица заполняется 2 циклами и массивом. Я должен контролировать все через классы, которые я ставлю на вход. Если вы поработаете над этим какое-то время, вам поможет некоторое понимание.

Вот цикл и входы:

            <cfloop from="1" to="#ArrayLen(labels)#" index="r">
        <tr>
            <td class="labels"><cfif ArrayIsDefined(labels,r) AND labels[r] NEQ "Open">#labels[r]#</cfif></td>
            <cfloop from="1" to="7" index="i">
            <td id="Day#i#" class="row#r# col#i#">
                <cfif r EQ 1>#Left(DayOfWeekAsString(i),3)#<cfelse><cfif r EQ 2><input type="text" class="date-mask" /><cfelse><input type="text" class="R#r# C#i#" onkeypress="return HorizVertiCalc(#r#, #i#)" /></cfif><cfif r EQ 25><input type="text" class="dailyTot#r#" onkeypress="return VertiCalc(#i#)" /></cfif></cfif></td>
            </cfloop>
            <td class="totals"><cfif r EQ 1>Total<cfelse><input type="text" class="ttl#r# vttl#i#" readonly="readonly" /></cfif></td>
        </tr>
        </cfloop>

А вот мой Javascript на данный момент:

         HorizVertiCalc = function(h, v){
            $('.R'+h).sum("keyup", ".ttl"+h);
            $('.C'+v).sum("kepup", ".dailyTot"+h);

            if($('.R'+h) == $('.R4')){
                Number($(this).val()) * <cfoutput>#mileage#</cfoutput>;
                $(this).sum("keypup", ".R5");
                }
            } 

        VertiCalc = function(v){

            alert($('.C'+v));
        }

Мне нужно иметь возможность получать ежедневные итоги, итоговые суммы и итоги по каждой категории (что я могу сделать прямо сейчас). Кроме того, я должен быть в состоянии умножить мили # на число, специфичное для переменной # миль #, и чтобы сумма для этой ячейки была прямо под ней.

Хорошо. Это много, и если кто-то может оказать какую-то помощь, это будет с благодарностью!

1 Ответ

0 голосов
/ 31 июля 2009

Не зная точно, как работает ваш код, вот пара предложений / замечаний:

Я заметил, что у вас есть "keyup", "kepup" и "keypup". Они все должны быть разными?

Не уверен, что Number () делает точно, но вы можете использовать parseFloat (), возможно, в сочетании с проверкой isNaN () перед выполнением математических операций.

Я предполагаю, что ваш код Javascript - это jQuery? Вы делаете сравнение jQuery: if ($ ('. R' + h) == $ ('. R4')) У меня есть подозрение, что это всегда может вернуть ложь (как предложено на этой странице :) http://groups.google.com/group/jquery-en/browse_thread/thread/002d7543186ddaa6

Джеймс

...