0

我创建了一个测验和一个一个显示的问题,并且必须在列表中显示问题,单击它会转到列表中问题的 ID。但它不起作用,装载机不会停止

这是我的脚本

<script type="text/javascript">
  function set_active(){
  $$('.active-link').each(function(e){
    e.removeClassName('active-link');
  });
    this.addClassName('active-link')
  }

  function draw_report(){
  Element.show('loader')
  new Ajax.Request('answers/ans',
  {asynchronous:true, evalScripts:true,
  parameters:'passed_question='+this.id+'&exam_group_id=<%= @exam_group.id %>',onSuccess:function(request){Element.hide('loader')}
  })
}

  document.observe("dom:loaded", function() {
    $$('.student-link').invoke('observe','click',draw_report);
    $$('.student-link').invoke('observe','click',set_active); 
  });
</script>

在查看页面

<div class="list_id">
  <%= "Questions" %>
</div>
  <% @slno = 0 %>
  <ul class="student_list">
    <% @questions.each do |s| %>
    <% @slno = @slno+1  %>
      <li class="student_names">
        <a href="#" id="<%=s.id%>"  class="student-link" > <%= @slno %></a>
      </li>
    <% end %>
  </ul>

但是如果我单击问题 ID,它不会响应任何内容

4

1 回答 1

0

您使用的 Javascript 控制台是否完全没有错误?我想说添加括号应该可以解决问题:

$$('.student-link').invoke('observe','click',draw_report());
$$('.student-link').invoke('observe','click',set_active());

编辑:我看到您在原始问题中使用了 jQuery 标签。你确定你使用的是 jQuery 吗?因为上面的 javascript 代码看起来很像 Prototype。

于 2013-11-06T09:10:34.427 回答