如何从html.erb调用JavaScript函数

Izi*_*ksh 4 ruby ruby-on-rails

如何从html.erb调用JavaScript函数

application.js中

function displayClock() {
  var digital = new Date();
  var hours = digital.getHours();
  var minutes = digital.getMinutes();
  var seconds = digital.getSeconds();
  var amOrPm = 'AM';
  if (hours > 11) amOrPm = 'PM';
  if (hours > 12) hours = hours - 12;
  if (hours == 0) hours = 12;
  if (minutes <= 9) minutes = '0' + minutes;
  if (seconds <= 9) seconds = '0' + seconds;
  dispTime = '<b>'+hours + ':' + minutes + ':' + seconds + ' ' + amOrPm+'</b>';
  document.getElementById('time').innerHTML = dispTime;
  setTimeout('displayClock()', 1000);
}
Run Code Online (Sandbox Code Playgroud)

并在home.html.erb

displayClock();
Run Code Online (Sandbox Code Playgroud)

但它没有调用功能!

Mar*_*pka 20

您可能需要使用正确的标记来表明您正在编写JS代码:

<script type="text/javascript">
  displayClock();
</script>
Run Code Online (Sandbox Code Playgroud)

另外,既然您可能使用jQuery(它是Rails中的默认设置),您可能需要确保在加载整个文档后调用该函数:

<script type="text/javascript">
  $(document).load(function(){
    displayClock();
  });
</script>
Run Code Online (Sandbox Code Playgroud)

我还建议你不要编写你的JS application.js并将此文件仅用作清单文件,其中包括通过Rails 资产管道的其他脚本.

你还可以利用JavaScript的帮手javascript_tag在你的html.erb文件

<%= javascript_tag "displayClock()" %>
Run Code Online (Sandbox Code Playgroud)