2014-02-27 99 views
0

我在webpage.php中有一些JavaScript代碼。部分JS代碼由PHP生成。我想將JS移動到不同的文件jscode.js。如何根據webpage.php中聲明的變量,將web生成的JS代碼移出webpage.php,使webpage.php仍然動態加載JS代碼? webpage.php的.js文件中的PHP生成代碼

部分看起來是這樣的:

<?PHP $height = $_POST['height']; 
// more code 
var height = <?PHP echo $height; ?>; 

我希望它在哪裏$高度文檔的聲明。我該怎麼做呢?

+0

你可以只在jscode定義VAR高度.js,並執行height = 1111;在PHP中。只需確保在設置高度後啓動主功能,例如在php後調用一些init()函數height = .. – Andrew

回答

1

如果webpage.php包含文檔<head>你可以做

<script type="text/javascript"> 
    var height = "<?php echo $height; ?>"; 
</script> 
<script type="text/javascript" src="jscode.js"></script> 

然後,如果你包括你jscode.js腳本後,該height變量將在規模

+0

我在測試前接受了你的答案,我不應該那樣做。我收到了錯誤:code.js中沒有定義高度,儘管在webpage.php的標題中有這個: 可能是什麼原因? – user3324865

+0

嘗試將引號放在 - 'var height =「<?php echo $ height;?>」;' – Pattle

+0

問題已解決:) – user3324865

4

說高度與div標籤相關。讓PHP呼應高度的DIV像這樣:

<div id="whatever" data-height="<?php echo $height; ?>"></div> 

然後訪問它在JavaScript這樣的:

var height = parseInt(document.getElementById("whatever").getAttribute("data-height"), 10); 

包含在你的頁面的結束script標籤這一點,以保證當JS代碼執行時,存在div(或者其中任何一個)元素。

這是做這件事最不顯眼的方式,它不依賴於作爲全局變量的height

+0

+1,這是最優雅的方式來做到這一點 – NorthBridge

+0

不行,這是不好的,因爲與html標準不兼容,請參閱W3C規則的更多信息。 –

+1

不確定那@Loïc。請提供參考? [Here](http://www.w3.org/TR/2010/WD-html5-20101019/elements.html#custom-data-attribute)是關於HTML5自定義數據屬性的W3部分,如果這是您認爲的無效?請注意,「每個HTML元素都可以具有指定的任意數量的自定義數據屬性,並具有任何值。」 –

0

只需將dynamicaly生成的值傳遞給.js文件中定義的函數即可。

//jscode.js 
function doStuff(x, y){ 
    //stuff 
} 

//page.php 
<scrpit> 
    doStuff(<?PHP echo $x; ?>, <?PHP echo $y; ?>); 
</script> 
0

你可以使用基本模板。

在你的js文件把你的來源,並在你需要一個PHP變量,稱之爲一種特殊的方式,如: [PHP:MyVar的]

然後在你的PHP,你可以把所有的模板瓦爾在數組。

$templateVars = array('[php:MyVar]'=>'value', '[php:MyVar2]'=>'value2'); 

加載文件:

$js = file_get_contents("js_file.js"); 

和替換它的內容:

$js = str_replace(array_keys($template_vars), array_values($template_vars), $js); 

到最後打印:

echo "<script>$js</script>";