2013-01-16 41 views
0

我想清理我的頁面,而我這樣做的主要方法之一是將JavaScript和JQuery函數放入名爲'scripts.js'的文件中在頁面加載時自動訪問。將javascript/jquery函數放置在通用可訪問頁面

我遇到了使用php從頁面調用的函數的問題。例如,下面的函數不起作用,並且實際上'殺死'所有頁面的腳本(所以現在應該隱藏的東西不是,而且東西不能正確加載)。我將其縮小到我用來調用變量的事實。我真的希望能夠在這個通用文件中保留使用PHP的函數,而不是堵塞HTML模板頁面,關於如何完成這項工作的任何想法,或者如果不是我可以調用所需的值?如果有幫助,它們總是在渲染之前被提取到頁面。

function positiveSelect() 
{ 
    var size = <?php echo $idea[0]["size"]; ?> * 1; 
    if (size > 5) 
     return true; 
    else 
     return false; 
} 
+1

您可以將數據存儲在您的html的某處並使用js訪問它。例如,如果您正在將'$ idea []'作爲類的「idea」輸出到頁面上,那麼您可以執行'var size = $(「。idea」)。'length' –

+0

是否有任何普遍接受的方式這樣做?或者你有什麼想法的最佳方式?我寧願不必在白色文本中插入一堆段落。從本質上講,有沒有什麼方法可以將它存儲在HTML中,使其不會顯示在頁面上? – cschippe

+0

將您的.js文件轉換爲php腳本,並且包含/運行任何必需的代碼來填充$ idea var。 –

回答

4

如果您將無法獲取你的數據形成DOM本身可以存儲與相應的對象的值:

<div data-size=20> 

,然後用retrive它:

$(element).data("size"); 

,或者如果你有全球你要存儲的數據可以在你的頭文件中創建一個值「容器」,如下所示:

<script type="text/x-json" class="global-data">{"value1":"1","value2":"2"}</script> 

,然後閱讀該元素的內容並解析它JSON.parse

+0

這是有道理的,似乎喜歡這樣做的最簡單,最好的辦法,最好的HTML元素上的任何想法使用?我想 cschippe

+0

我只會創建一個新元素,如果它真的需要。如果你要確保至少選擇一個組的5個複選框而不超過10個,可以將它們分組(如果還沒有完成)在一個元素中並添加以下信息:'

... ....
' –

+0

@ChrisS創建了一個jsfiddle示例http: //jsfiddle.net/AnaAh/希望這可以幫助你 –

0

您可以只命名生成腳本文件scripts.php或scripts.js.php;那麼PHP預處理器將處理該文件,並且將評估PHP語句。

2

如果此功能是特定於某個頁面的,那麼您可能需要添加第二個剛剛在該頁面上加載的js腳本。

另一種方法是在該php頁面中回顯一個js變量,並讓您的代碼將該變量作爲參數調用該函數。

+0

之間溝通不暢的一些如果downvoter具有實際意義的補充,請做。 – jeroen

2

,您可以給javascript中的「.php」結尾,並在完全相同的方式調用它的腳本:

<script type="javascript" src="path/to/scripts.php"></script> 
+0

我會盡可能避免混合php和javascript,因爲這會阻止使用例如jslint或最小化工具。 –

+0

我試過,但它似乎並沒有爲我工作,並閱讀幾個的其他意見後,很多人似乎認爲這是一個有點「危險」的做這種方式。無論如何,非常感謝。 – cschippe

+0

@ t.niese:我知道,但是由於他需要這種解決方案,這是我想出來的最好的。 –

0

當混合PHP或任何服務器端語言使用JavaScript,你需要知道在客戶端創建javascript文件時,php只執行一次。

這可能是爲什麼你會得到意想不到的結果。當你從一個頁面移動到另一個頁面時,全局scripts.js中的php代碼片段不會被更新。