2010-06-30 54 views
1

嗨有一個PHP模板,顯示一個html頁面。在其中有一個調用js文件來初始化一些jquery插件。在html頁面中獲取變量值並在外部使用它js

模板上

我有這樣的代碼:

(function($) { 

$(document).ready(function(){ 
    var adlow = <?php echo $jSeblod->disparities_tick_lower->value ?>; 
    var adhigh = <?php echo $jSeblod->disparities_tick_upper->value ?>; 
    var adtickno = <?php echo $jSeblod->disparities_tick_divisions->value ?>; 

    }); 
})(jQuery); 

那麼init.js頁我叫adlow,adhigh和adtickno上。 我得到變量未定義的錯誤。

php正在返回正確的值。但是然後外部init文件沒有得到它們。我是否需要做一些特殊的事情來讓init文件能夠使用這些變量? 我所做的只是把他們插入...

謝謝,我對這些頁面之間的交互有點朦朧。

回答

2

他們需要是全局的其他頁面才能使用它們。嘗試刪除var。或命名空間他們,這是更好的做法:

$(document).ready(function(){ 
    MYAPP = {}; 
    MYAPP.adlow = <?php echo $jSeblod->disparities_tick_lower->value ?>; 
    MYAPP.adhigh = <?php echo $jSeblod->disparities_tick_upper->value ?>; 
    MYAPP.adtickno = <?php echo $jSeblod->disparities_tick_divisions->value ?>; 

    }); 
+0

嗨,這正是我的意思。我不明白整個全球聲明的事情。但是balusc也是正確的。沒有其他答案,答案都沒有。你需要在init.js加載之前聲明全局變量。 – liz 2010-07-01 15:25:45

+0

就這樣,我很清楚。 MYAPP是新的命名空間?並且我用這個名字空間聲明的任何變量將在全局上可用? – liz 2010-07-01 15:30:49

+0

'MYAPP'是一個全局JavaScript對象,被用作一個名稱空間。由於'MYAPP'是全球性的,所以添加到它的任何變量也都可以全局訪問,是的。 – 2010-07-01 15:39:07

2

你需要init.js得到加載之前打印出來在全球範圍內

<script> 
    var adlow = <?php echo $jSeblod->disparities_tick_lower->value ?>; 
    var adhigh = <?php echo $jSeblod->disparities_tick_upper->value ?>; 
    var adtickno = <?php echo $jSeblod->disparities_tick_divisions->value ?>; 
</script> 
<script src="init.js"></script> 

$(document).ready()期間打印它們是沒有意義的。在此之前已經裝載了init.js

+0

嗨,雖然你的答案是必要的,(見上面的評論)......上面真的是我的問題的核心,這是關於傳遞變量。如果我可以檢查兩個正確的,我也會檢查你的答案。 – liz 2010-07-01 15:26:55

相關問題