2016-12-07 64 views
1

HTML。每个JS导致页面上与其他类问题

<ul class="courseDates"> 
    <li class="dateOne col-sm-2"> 
     {tag_course date 1} 
    </li> 
    <li class="dateTwo col-sm-2"> 
     {tag_course date 2} 
    </li> 
    <li class="dateThree col-sm-2"> 
     {tag_course date 3} 
    </li> 
    <li class="dateFour col-sm-2"> 
     {tag_course date 4} 
    </li> 
    <li class="dateFive col-sm-2"> 
     {tag_course date 5} 
    </li> 
</ul> 


的Javascript

$('.dateOne').each(function() {  
    var data =jQuery(this).text(); 
    var arr = data.split('-'); 
    jQuery(this).html('<a class="button '+arr[1] + '" href="/training-rego?trainingDate={tag_course date 1}&trainingName={tag_name_nolink}&courseId={tag_itemid}"> <span class="day">'+arr[0] + '</span> <span class="month">'+arr[1] + '</span> <span class="year">'+arr[2] + '</span> </a>');    
}); 

$('.dateTwo').each(function() {  
    var data =jQuery(this).text(); 
    var arr = data.split('-'); 
    jQuery(this).html('<a class="button '+arr[1] + '" href="/training-rego?trainingDate={tag_course date 2}&trainingName={tag_name_nolink}&courseId={tag_itemid}"> <span class="day">'+arr[0] + '</span> <span class="month">'+arr[1] + '</span> <span class="year">'+arr[2] + '</span> </a>');    
}); 

$('.dateThree').each(function() {  
    var data =jQuery(this).text(); 
    var arr = data.split('-'); 
    jQuery(this).html('<a class="button '+arr[1] + '" href="/training-rego?trainingDate={tag_course date 3}&trainingName={tag_name_nolink}&courseId={tag_itemid}"> <span class="day">'+arr[0] + '</span> <span class="month">'+arr[1] + '</span> <span class="year">'+arr[2] + '</span> </a>');    
}); 

$('.dateFour').each(function() {  
    var data =jQuery(this).text(); 
    var arr = data.split('-'); 
    jQuery(this).html('<a class="button '+arr[1] + '" href="/training-rego?trainingDate={tag_course date 4}&trainingName={tag_name_nolink}&courseId={tag_itemid}"> <span class="day">'+arr[0] + '</span> <span class="month">'+arr[1] + '</span> <span class="year">'+arr[2] + '</span> </a>');    
}); 

$('.dateFive').each(function() {  
    var data =jQuery(this).text(); 
    var arr = data.split('-'); 
    jQuery(this).html('<a class="button '+arr[1] + '" href="/training-rego?trainingDate={tag_course date 5}&trainingName={tag_name_nolink}&courseId={tag_itemid}"> <span class="day">'+arr[0] + '</span> <span class="month">'+arr[1] + '</span> <span class="year">'+arr[2] + '</span> </a>');    
}); 

我需要删除.each因此代码为每个项目运行时, .each在页面上的其他项目中导致未定义的错误。它需要是单独的,所以它会为每个日期组输出特定的标签,.each函数使页面上的最后一项工作,但是在第一项上有未定义的错误。

Here是一个工作版本,所以你可以检查它。

有没有更好的方法来编写JS?

任何有关此事的帮助将不胜感激,谢谢。

+1

是'{tag_course日期1}'的东西所取代?当你用'-'分割时,你会在问题中得到更好的结果,而这完全没有出现在本文中。 – Jamiec

+0

是的,所以在网页上可能会有5门课程,每门课程都有一个输入课程日期1的字段,然后每个课程都有一个模板,当它在网站的前端生成时,会为每个课程分配日期一。那有意义吗? @Jamiec – Jake

+0

请注意,尽量使用jQuery的方式保持一致,如果不需要它,可以同时使用'$()'和'jQuery()'。 – GillesC

回答

0

尝试类似这样的事情。

HTML

<ul class="courseDates"> 
    <li class="date col-sm-2"> 
     {tag_course date 1} 
    </li> 
    <li class="date col-sm-2"> 
     {tag_course date 2} 
    </li> 
    <li class="date col-sm-2"> 
     {tag_course date 3} 
    </li> 
    <li class="date col-sm-2"> 
     {tag_course date 4} 
    </li> 
    <li class="date col-sm-2"> 
     {tag_course date 5} 
    </li> 
</ul> 

的Javascript

$('.date').each(function(index) {  
    var data =jQuery(this).text(); 
    var arr = data.split('-'); 
    jQuery(this).html('<a class="button '+arr[1] + '" href="/training-rego?trainingDate={tag_course date ' + index + '}&trainingName={tag_name_nolink}&courseId={tag_itemid}"> '+arr[0] + ' '+arr[1] + ' '+arr[2] + ' </a>');   
}); 
+0

.each导致此页面上未解决的问题http://techserve01.businesscatalyst.com/training-categories/hazardous-areas 单击LVR CPR这些日期按钮正常工作,单击一个,它会将您带到rego表单页面并将选定的课程日期传递给rego页面。然后点击'HV 4 Competency Cluster'下的日期按钮,你会看到LVR CPR日期仍然通过 – Jake

+0

您是否也在使用相同的类名**日期**作为其他元素? –

0

你只是这种过于复杂,只是让他们都有一个共同的类(如date)并运行.each代码只有一次。他们都做同样的行为,这是

  • 斯普利特用连字符
  • 使用日期部分作为与链接设定<button>
  • 包裹的日期一类的li的日期。

查看下面的工作代码并查看源代码以查看转换。

$('.date').each(function() { 
 
    var $this = $(this); 
 
    var data =$this.text(); 
 
    var arr = data.split('-'); 
 
    $this.html('<a class="button '+arr[1] + '" href="/training-rego?trainingDate={tag_course date 5}&trainingName={tag_name_nolink}&courseId={tag_itemid}"> '+arr[0] + ' '+arr[1] + ' '+arr[2] + ' </a>');   
 
}); 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul class="courseDates"> 
 
    <li class="date col-sm-2"> 
 
    14-Dec-2016 
 
    </li> 
 
    <li class="date col-sm-2"> 
 
    15-Dec-2016 
 
    </li> 
 
    <li class="date col-sm-2"> 
 
    16-Dec-2016 
 
    </li> 
 
    <li class="date col-sm-2"> 
 
    24-Dec-2016 
 
    </li> 
 
    <li class="date col-sm-2"> 
 
    29-Dec-2016 
 
    </li> 
 
</ul>

+0

。每个导致此页面上的未解决的问题[工作版本](http://techserve01.businesscatalyst.com/training-categories/hazardous-areas)点击LVR CPR这些日期按钮正常工作,单击一个,它会采取你进入rego表单页面并将选定的课程日期传递给rego页面。然后点击'HV 4 Competency Cluster'下的日期按钮,您将看到LVR CPR日期仍然通过 – Jake

+0

@Jake,这与您的JavaScript无关,并与您的服务器端代码建立'我怀疑是我的。 – Jamiec

+0

@Jake哦,不要等待它,因为你包括javascript两次。每个标签一个。是的,不这样做。 – Jamiec