我应该如何将 javascript 函数调用到 kohana 视图中?
Posted
技术标签:
【中文标题】我应该如何将 javascript 函数调用到 kohana 视图中?【英文标题】:how should i call a javascript function into a kohana view? 【发布时间】:2011-02-09 08:24:17 【问题描述】:我有一个简单的 kohana 视图和一个倒计时 30 分钟的 javascript。 我已经将 javascript 文件放入目录 /media m 中,它的名称是 countdown.js .我的问题是:我怎么能调用那个javascript?形成视图?还是从控制器中显示在视图中?以及我如何在控制器或视图中准确处理 js 函数或函数?
谢谢
倒计时js:
var javascript_countdown = function () var time_left = 10; //倒计时的秒数 var output_element_id = 'javascript_countdown_time'; var keep_counting = 1; var no_time_left_message = 'JavaScript 倒计时没有时间了!';
function countdown()
if(time_left < 2)
keep_counting = 0;
time_left = time_left - 1;
function add_leading_zero(n)
if(n.toString().length < 2)
return '0' + n;
else
return n;
function format_output()
var hours, minutes, seconds;
seconds = time_left % 60;
minutes = Math.floor(time_left / 60) % 60;
hours = Math.floor(time_left / 3600);
seconds = add_leading_zero( seconds );
minutes = add_leading_zero( minutes );
hours = add_leading_zero( hours );
return hours + ':' + minutes + ':' + seconds;
function show_time_left()
document.getElementById(output_element_id).innerhtml = format_output();//time_left;
function no_time_left()
document.getElementById(output_element_id).innerHTML = no_time_left_message;
return
count: function ()
countdown();
show_time_left();
,
timer: function ()
javascript_countdown.count();
if(keep_counting)
setTimeout("javascript_countdown.timer();", 1000);
else
no_time_left();
,
init: function (t, element_id)
time_left = t;
output_element_id = element_id;
javascript_countdown.timer();
;
();
//以秒为单位的倒计时时间,以及元素ID javascript_countdown.init(3673, 'javascript_countdown_time');
【问题讨论】:
【参考方案1】:您可以使用kohana html helpers。在您的控制器功能或视图文件中,您可以这样:
echo html::script('media/countdown.js');
将echo
语句放在ID 为“javascript_countdown_time”的html 元素之后。如果可能,在关闭 </body>
之前。
...
<div id="javascript_countdown_time"></div>
...
<script src="/media/countdown.js"></script>
</body>
【讨论】:
我真的无法通过阅读您给我的链接中的内容来弄清楚 html 助手的外观。如何将 js 脚本嵌入到 html 助手中? javascript 在 countdown.js 中。如果您希望您的 javascript 是内联的,那么您可以直接回显它,例如echo "<script>window.onload = countdown()</script>"
。我在这里假设您在 countdown.js 中定义了一个 countdown() 函数
所以,如果我把 echo html::script('mediafiles/countdown.js');在控制器中,并在视图中回显“”,计数器根本不显示
@dana 这是假设您在 countdown.js 中有一个倒计时功能。在 countdown.js 中发布一些实际代码会有所帮助
好的,它现在发布在问题中。我的问题是:我应该在控制器中回显 html::script('mediafiles.countdown.js') 吗?当我在视图中编写 时,解释器会这样知道我在说什么吗?谢谢!【参考方案2】:
你可以按照@erickb 所说的去做,或者你可以在你的 查看 (php)
<script src="media/countdown.js"></script>
确保当页面显示在浏览器中时加载 countdown.js [使用 firebug 或 chrome 中的开发人员面板来验证它是否已加载。 ]
无论你想从哪里调用函数,只要调用它就行了。让我们知道它是怎么回事。
【讨论】:
所以,我在视图中有这个:echo html::script('countdown.js'); 您是否从浏览器中检查了 countdown.js 是否正在加载? 是的,如果我查看源代码,我会看到: 能不能点击你提到的view source中的countdown.js?它是否显示有效的 countdown.js ? 不,我实际上无法点击它。我真的不明白为什么它没有加载到视图中。为了简单起见,我将countdown.js放在了view文件夹中,所以路径很简单:echo html::script('countdown.js');以上是关于我应该如何将 javascript 函数调用到 kohana 视图中?的主要内容,如果未能解决你的问题,请参考以下文章
如何将自定义按钮添加到调用 JavaScript 函数的工具栏?
如何从客户端javascript调用节点函数? (HTML)
sencha / javascript - 如何从 tpl 模板中调用函数
如何调用参数来自 Ruby 模型的 javascript 函数?