не может получить переменную для передачи из функции с именем onclick - PullRequest
1 голос
/ 20 декабря 2011

Я вызываю функцию onclick secVar(sec1);, которая должна выполнить ее с помощью приведенного ниже сценария, но, похоже, она этого не делает, может кто-нибудь сказать мне, что я делаю неправильно.Я новичок в javascript, и у меня мало опыта в написании сценариев, и этот код, похоже, делает все меньше и меньше того, что я хочу.

<script type="text/javascript">
        var sec1=0;
        var sec2=0;
        var sec3=0;
        function secVar(){
            if(sec1) {
                sec1++;
                document.getElementById('sec1text').innerHTML = sec1;
            }
            if(sec2) {
                sec2++;
                document.getElementById('sec2text').innerHTML = sec2;
            }
            if(sec3) {
                sec3++;
                document.getElementById('sec3text').innerHTML = sec3;
            }
        }

        function largestVar(){
                if (sec1 >= sec2 && sec1 >= sec3) {
                    //a
                    document.getElementById('rig').innerHTML = 'Test1';
                } else if (sec2 >= sec1 && sec2 >= sec3) {
                    //b
                    document.getElementById('rig').innerHTML = 'Test2';
                } else {
                    //c
                    document.getElementById('rig').innerHTML = 'Test3';
                }
            }
    </script>

Если это поможет, старый код былКод ниже, прежде чем я попытался добавить в сценарий, чтобы определить наибольшую из переменных.Это увеличивало переменные по клику, но больше не так.В этот момент он содержал sec1Var().

<script type="text/javascript">
    var sec1=0;
    var sec2=0;
    var sec3=0;

    function sec1Var(){
    sec1++;
    document.getElementById('sec1text').innerHTML = sec1;
    }

    function sec2Var(){
    sec2++;
    document.getElementById('sec2text').innerHTML = sec2;
    }

    function sec3Var(){
    sec3++;
    document.getElementById('sec3text').innerHTML = sec3;
    }</script>

Если кто-то может объяснить мне, что я делаю неправильно, я был бы очень признателен.

Ответы [ 2 ]

1 голос
/ 20 декабря 2011

Я думаю, что трудно сказать, каково ваше намерение.Sparticus имеет право IF , что вы пытаетесь сделать, это посмотреть, являются ли sec1, 2 и 3 в настоящий момент истиной или ложью (0 или 1).Поскольку в настоящее время они ложные, код никогда не будет ничего делать, как правильно указывает Sparticus.

Однако я не уверен, что это именно то, что вы ЗНАЧИТ делать.Похоже, что условие, которое вы хотите проверить, заключается в том, пытаетесь ли вы увеличить sec1, 2 или 3. Другими словами: «Если вы передаете мне sec1, увеличьте его и обновите фрагмент HTML».

Но переменные так не работают.Когда вы говорите secVar(sec1), на самом деле вы говорите `secVar (0) '.Я не думаю, что это ваше намерение.

Итак, большая трата моего времени, если я ошибаюсь, но, поскольку я уже катаюсь, давайте представим, что я прав:

secVar должен иметь возможность принимать параметр, но сейчас вы объявили его недействительным.Изменение его для принятия параметра - это первый шаг:

function secVar(param) { ... };

Но это все равно ничего не даст.Потому что, когда вы все еще передаете его "0" с вашим существующим синтаксисом.Вам нужно передать ему что-то, что можно проверить, например строку:

secVar('sec1');

Когда вы это сделаете, теперь вы можете обновить свои условия, чтобы проверить, какая строка передается

if (param === 'sec1') { ... }

Вот скрипка: http://jsfiddle.net/ch4yk/

Примечания:

  • Скрипка включает jQuery просто для простотыпривязка событий грубой силы к кнопкам.Это просто пример.Вам не нужен JQuery;связывайте свои события так, как вы хотите.
  • В настоящее время он ничего не делает с функцией наибольшего значения, даже если код находится в скрипке
0 голосов
/ 20 декабря 2011

Ни один из ваших счетчиков не увеличится в этой реализации.

При запуске secVar () все счетчики обнуляются. Они никогда не увеличиваются, потому что они начинаются с нуля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...