Javascript не работает в Grails - PullRequest
0 голосов
/ 19 июля 2011

У меня простой скрипт отлично работает в html. Но в gsp он больше не работает.

Мой скрипт очень прост, как показано ниже:

// program variables
var displayElement;

// constants
var maxLength = 300;

// calculator variables
var text;
var currentLength;
var dotPosition;

var lastNumber;
var currentNumber;
var rememberedNumber;
var operator;

alert('hello22');

function parseNumber(number) {
        if ((number == -1) && (dotPosition > 0) || (maxLength == currentLength)) return;
        if (currentLength == 0) text = '';
        currentLength++;
        if (number == -1) {
                text += '.';
                dotPosition = currentLength;
        } else text += number;

        displayElement.value = text;
}

function parseBackspace() {
        if (currentLength == 0) return;
        if ('.' == text[currentLength-1]) dotPosition = 0;
        text = text.slice(0, currentLength-1);
        if(--currentLength == 0) text = '';
        displayElement.value = text;
}

function parseClearEntry() {
        currentLength = 0;
        text = '0';
        dotPosition = 0;
        displayElement.value = text;
}

function parseClear() {
        parseClearEntry();
        lastNumber = 0;
        operator = '';
        //added by Kevin
        displayElement.value = '';
}

function initAll() {
        alert('hello1113333333');
        text = '0';
        currentNumber = 0;
        currentLength = 0;
        displayElement = document.getElementById('TextBox');
        rememberedNumber = 0;
        lastNumber = 0;
        dotPosition = 0;
        alert('hello1111111111');
}

Когда я включаю в страницу просмотра gsp, я помещаю <g:javascript src="getKey.js" /> между <head></head>.

Затем я вызываю функцию initAll () как <body onload="initAll()">, а другие как <div class="holder"><input type="button" class="buttonstyle" value="7" name="Seven" onclick="parseNumber(7)" /></div>

Может кто-нибудь сказать мне, что не так? Я уверен, что скрипт был включен правильно, потому что было выдано предупреждение "hello22".

1 Ответ

1 голос
/ 19 июля 2011

Попробуйте поместить где-нибудь следующий код в нижний колонтитул:

<g:script>
(function() { initAll(); })();
</g:script>

или

<g:script>
window.onload = initAll; //note that is's without braces
</g:script>

вместо <body onload="initAll"

...