Ошибка проверки скрипта в функции - PullRequest
0 голосов
/ 02 марта 2012

Я отлично справляюсь с самообучением в JS. Я в восторге от того, что наконец-то выучил функции, и, или, вызывая функции и т. Д. Я даже взволнован, потому что я сортировал все по переменным, которые можно редактировать, не по переменным, и создал функции для всего остального. Итак, у меня есть вопрос, который я пытаюсь выяснить. Я добавляю коды ошибок ко всем моим редактируемым переменным. Я рассуждаю так: я знаю, что не всегда буду на этой должности, на работе, в жизни и т. Д., Поэтому я хочу убедиться, что, если кто-то придет новый, он сможет редактировать и уйти. Если они помещают alskjdfl туда, куда должны идти 1, 2 или 3, я бы хотел вернуть ошибку. Я прикалываюсь и добавляю свои собственные номера ошибок для забавы. Затем, если пользователь достаточно умен, он может просмотреть исходный код в коде JS и посмотреть мои заметки о том, почему отображается ошибка. О, кстати, это все внутренние документы, так что я не беспокоюсь о сети.

Ниже приведен код. По сути, если я перейду к переменной и введу алфавитный символ или несколько символов alsdfjlkjsdaf, это сломает страницу. Я пытаюсь найти способ, который говорит, что если там что-то есть, кроме 1-3, то установите скорость на 1 и выдайте ошибку. Мои попытки до сих пор не увенчались успехом, потому что независимо от того, что я вставил туда, он все равно ломает страницу, как только персонаж появляется в списке. Я думал, что название функции кажется подходящим. :)

Это для полосы прокрутки. Он отображает текстовую информацию, а также связанные с работой вещи и часы. Он встроен в iframe.

- Благодаря всему этому чипу!

/* Start speedlimit code - This code ensures speed won't be faster than 3. */
function speedLimitSet()
{
if ((speedSet !== 1) && (speedSet !== 2) && (speedSet !== 3))
{
speedSet = 1
//error code 1003
alert("Error Code 1003 - speedSet - Please change speed to 3 or less. This pop up will continue to pop up otherwise. Speed limit is set to 3 or less.")
}

}
//end speedlimit code

Edit:

    /* Quality check for turnOffcrawler. It has to be typed as "Yes" or "No" else will error. */
function crawlerSwitch()
{
if (turnOffcrawler == "No") /* Code for general message is included in here. It looks long but it is spaced out. */
{
width = "1000px";
speed = speedSet;
errorFlag1000 = "No";
            }
else if (turnOffcrawler == "Yes")
{
width = "0px";
speed = 0;
errorFlag1000 = "No";
}
else
{
width = "1000px";
speed = speedSet
errorFlag1000 = "Yes"
importantMessageError = "Error Code 1000 - turnOffcrawler is not set correctly. Please check settings and/or refer to instructions. &nbsp&nbsp&nbsp&nbsp&nbsp Error Code 1000 - turnoffcrawler is not set correctly. Please check settings and/or refer to instructions." 
}
}
//end quality check 

Который затем ссылается на:

    function marqueeInitCall()
{
marqueeInit({
    uniqueid: 'mycrawler',
    style: {
        'padding': '0px',
        'width': width, //change to 1000 for normal, change to 0 for off
        'background': scrollerBackground, //#00008B is background of menu bar
        'border': '0px solid black'
    },
    inc: speed, //speed - pixel increment for each iteration of this marquee's movement
    mouse: mouse, //mouseover behavior ('pause' 'cursor driven' or false)
    moveatleast: 1,
    neutral: 150,
    savedirection: true
});
}

1 Ответ

0 голосов
/ 02 марта 2012

Пара проблем с этим кодом:

  1. Вы не объявляете никаких аргументов. Я предполагаю, что speedSet должен был быть аргументом функции?

  2. Вы используете !==, что правильно , если вы знаете, что вы получаете уже число, а не числовую строку. Если вы этого не знаете, сначала нужно разобрать.

  3. Возможно, я бы не сравнивал все три значения по отдельности, но это могло бы быть стилем.

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

так:

/* Start speedlimit code - This code ensures speed won't be faster than 3. */
function speedLimitSet(speedSet)
{
    speedSet = parseInt(speedSet, 10); // Now it's a number or `NaN`
    if (isNaN(speedSet) || speedSet < 1 || speedSet > 3)
    {
        speedSet = 1;
        //error code 1003
        alert("Error Code 1003 - speedSet - Please change speed to 3 or less. This pop up will continue to pop up otherwise. Speed limit is set to 3 or less.")
    }

    // Save it somewhere appropriate here
}
//end speedlimit code

Другие заметки:

  • Отступ в коде делает огромную разницу в удобочитаемости. Обратите внимание, как я с отступом кода выше.

  • Несмотря на то, что JavaScript ужасен: автоматическая вставка точки с запятой , мой скромный совет: никогда не полагайтесь на него, всегда вставляйте все необходимые точки с запятой. (Вам понадобился один после speedSet = 1.)

  • alert не лучший способ справиться с ошибками программирования. Рекомендовать генерировать исключение и обрабатывать его на более высоком уровне в коде.

  • Вы можете делать то, что вам нравится, с вашими именами функций, но соглашение для функций-установщиков обычно составляет setXyz (например, setSpeedLimit вместо speedLimitSet).

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