2011-09-08 32 views
2

我正在使用Grails 1.3.7和jQuery Mobile。我需要執行下面的Javascript來爲特定頁面初始化一個select,但是firebug確認這個代碼在頁面呈現時不被包含,即使佈局中的g:layoutHead正在渲染同樣位於前往此頁面。JavaScript未在Grails GSP中呈現

<g:javascript> 
    var zselect = document.getElementById('tee') 
    var zopt = zselect.options[zselect.selectedIndex] 
</g:javascript> 

任何想法爲什麼腳本不被渲染?

我的佈局的頭部有jQuery和jQuery Mobile以及jQuery UI datepicker和fluid960。這是佈局頭的末端:

<g:layoutHead/> 
</head> 

下面是元視圖和標題標記呈現的視圖的頭部,但不是javascript。

<head> 
    <g:javascript> 
    var zselect = document.getElementById('tee') 
    var zopt = zselect.options[zselect.selectedIndex] 
    </g:javascript> 
    <meta name="layout" content="main"> 
    <g:set var="entityName" value="${message(code: 'foursome.label', default: 'Foursome')}"/> 
    <title><g:message code="default.create.label" args="[entityName]"/></title> 
</head> 

回答

0

也許它在GSP你<head>部分,但佈局不具有<g:layoutHead/>標籤?

結帳the Layout documentation for more info

+0

但如果它缺少'',標題和meta標籤是否應該顯示?! –

+0

我剛剛更新了我的問題以顯示佈局和視圖。我的佈局中有標記。感謝您參考文檔。 – SeattleStephens

0

如果您查看呈現的html,那麼Javascript是否存在?

如果是這樣,我認爲您的問題是,您嘗試在呈現DOM之前在頭中引用DOM中的對象。您將不得不將初始化代碼移動到GSP的底部,以確保整個DOM已加載。或者,您可以使用jQuery的onLoaded功能。

+0

如果我查看頁面GET的Firebug Console> Response選項卡,我確實在那裏看到了我的javascript,但是在Firebug HTML或Script> Inline窗口下看不到我的JavaScript。 – SeattleStephens

+0

感謝@sbglasius,指向jQuery onLoad的指針很有幫助,但是在Javascript和進一步調查中,標記未呈現。我可以把這個JavaScript放在佈局中,它可以工作,但我並不真的希望它爲每個使用主佈局的頁面執行。 – SeattleStephens