我希望在我的javascript中使用smarty变量,但我不能这样做><'
我当前的代码但生成错误=>
<script type="text/javascript">
var title = document.title;
var height1 = {$mysmartyvariable1};
var height2 = {$mysmartyvariable2};
if (title == 'index')
{ var height = height1; }
else { var height = height2; };
$(document).on("scroll",function(){
if($(document).scrollTop()>height){
$("#nav").removeClass("navfull").addClass("navsmall");
} else{
$("#nav").removeClass("navsmall").addClass("navfull");
}
});
</script>
那我怎么能在这个脚本部分添加mysmartyvariable1呢?
#感谢Allan Nienhuis正确的代码是:
<script type="text/javascript">
var title = document.title;
var height1 = {$mysmartyvariable1};
var height2 = {$mysmartyvariable2};
{literal}
if (title == 'index')
{ var height = height1; }
else { var height = height2; };
$(document).on("scroll",function(){
if($(document).scrollTop()>height){
$("#nav").removeClass("navfull").addClass("navsmall");
} else{
$("#nav").removeClass("navsmall").addClass("navfull");
}
});
{/literal}
</script>
答案 0 :(得分:1)
我在您的代码中看到了两个问题。
1)你没有在$ mysmartyvariable2周围添加{}括号。这将分配&#39; undefined&#39;因为smarty根本不会处理这个变量,所以没有定义名为$ mysmartyvariable2的javascript变量。
2)你需要在嵌入使用{}字符的javascript时使用{literal} {/ literal}标签,这样smarty就不会尝试将javascript {}字符解释为聪明的语法。
http://www.smarty.net/docsv2/en/language.function.literal
在这种情况下,您可以在height2声明/赋值后启动{literal}标记,因为前面的行应该由smarty解释,但以下行不应由smarty解释。
var height2 = {$mysmartyvariable2};
{literal}
if (title == 'index')
{ //code here
}
// other code
{/literal}
</script>