Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 代码可以在Firefox Scratchpad中工作,但不能在代码中工作_Javascript_Jquery_Dom_Fullcalendar - Fatal编程技术网

Javascript 代码可以在Firefox Scratchpad中工作,但不能在代码中工作

Javascript 代码可以在Firefox Scratchpad中工作,但不能在代码中工作,javascript,jquery,dom,fullcalendar,Javascript,Jquery,Dom,Fullcalendar,我正在使用FullCalendar加载Google日历。我想将日历中某个类的所有a标记转换为spans。如果我在页面加载后在Scratchpad中执行代码,那么我的代码工作得很好,但是如果我将它放在JavaScript文件中的日历代码之后,它什么都不做(所有as仍然是as)。下面是我的代码: $(document).ready(function() { $('#calendar').fullCalendar({ eventSources: [ 'MY CALEND

我正在使用FullCalendar加载Google日历。我想将日历中某个类的所有
a
标记转换为
span
s。如果我在页面加载后在Scratchpad中执行代码,那么我的代码工作得很好,但是如果我将它放在JavaScript文件中的日历代码之后,它什么都不做(所有
a
s仍然是
a
s)。下面是我的代码:

$(document).ready(function() {
  $('#calendar').fullCalendar({
      eventSources: [
        'MY CALENDAR URL',
        {
            url: 'https://www.google.com/calendar/feeds/en.usa%23holiday%40group.v.calendar.google.com/public/basic',
            className: 'holiday'
        }
      ],
      header: {
        left:   'title',
        center: '',
        right:  'prev,next'
      }
  });
  var aclass = $('a.holiday').attr('class');
  var astyle = $('a.holiday').attr('style');
  var atext = $('a.holiday').html();
  $('a.holiday').replaceWith('<span style="'+ astyle +'" class="'+ aclass +'">'+ atext +'</span>');
});
$(文档).ready(函数(){
$(“#日历”).fullCalendar({
事件来源:[
“我的日历URL”,
{
网址:'https://www.google.com/calendar/feeds/en.usa%23holiday%40group.v.calendar.google.com/public/basic',
类名:“假日”
}
],
标题:{
左:'标题',
中心:'',
右图:“上一页,下一页”
}
});
var aclass=$('a.holiday').attr('class');
var astyle=$('a.holiday').attr('style');
var atext=$('a.holiday').html();
$('a.holiday')。替换为(“”+atext+“”);
});
JS错误控制台中只显示两个错误:

[17:34:08.182]不推荐使用getUserData()或setUserData()。 改用WeakMap或element.dataset

[17:34:08.663]语法错误:使用//@指示源映射URL pragmas已被弃用。改用//#


他们俩似乎都与我的问题无关。一个位于jQuery中,另一个位于requestNotifier.js中。

好的,我们已经解决了这个问题:日历必须完全加载,所以用不同的事件分离代码效果很好:

$(document).ready(function() {
  $('#calendar').fullCalendar({
      eventSources: [
        'https://www.google.com/calendar/feeds/r9iglfiamf6s7vr61lspgaa35g%40group.calendar.google.com/public/basic',
        {
            url: 'https://www.google.com/calendar/feeds/en.usa%23holiday%40group.v.calendar.google.com/public/basic',
            className: 'holiday'
        }
      ],
      header: {
        left:   'title',
        center: '',
        right:  'prev,next'
      }
  });
});
$(window).load(function() {
  var aclass = $('a.holiday').attr('class');
  var astyle = $('a.holiday').attr('style');
  var atext = $('a.holiday').html();
  $('a.holiday').replaceWith('<span style="'+ astyle +'" class="'+ aclass +'">'+ atext +'</span>');
});
$(文档).ready(函数(){
$(“#日历”).fullCalendar({
事件来源:[
'https://www.google.com/calendar/feeds/r9iglfiamf6s7vr61lspgaa35g%40group.calendar.google.com/public/basic',
{
网址:'https://www.google.com/calendar/feeds/en.usa%23holiday%40group.v.calendar.google.com/public/basic',
类名:“假日”
}
],
标题:{
左:'标题',
中心:'',
右图:“上一页,下一页”
}
});
});
$(窗口)。加载(函数(){
var aclass=$('a.holiday').attr('class');
var astyle=$('a.holiday').attr('style');
var atext=$('a.holiday').html();
$('a.holiday')。替换为(“”+atext+“”);
});

FullCalendar提供了一些很好的挂钩,您可以使用这些挂钩来设置事件的样式

完成工作的一种方法是将当前代码移动到
eventAfterAllRender
,如下所示:

$('#calendar').fullCalendar({
  [...]
  eventAfterAllRender: function() {
    var aclass = $('a.holiday').attr('class');
    var astyle = $('a.holiday').attr('style');
    var atext = $('a.holiday').html();
    $('a.holiday').replaceWith('<span style="'+ astyle +'" class="'+ aclass +'">'+ atext +'</span>');
  }
  [...]
});
$(“#日历”).fullCalendar({
[...]
eventAfterAllRender:function(){
var aclass=$('a.holiday').attr('class');
var astyle=$('a.holiday').attr('style');
var atext=$('a.holiday').html();
$('a.holiday')。替换为(“”+atext+“”);
}
[...]
});

查看并告诉您在中看到的错误以及它们指向的行。您可能需要在页面加载而不是DOM加载上运行该操作。@Juhana:没有错误与我的问题相关。@Joe:尝试过,但仍然无效。(使用
$(window.load()
)这就是我最后所做的,这使得在每个月的更改之后重新运行代码变得很容易。