我正在使用fiddle来显示日期和时间列表(时区EST)。
1 août 03:45 /* When timezone is eastern standard time */
ût 03:45 /* When timezone is eastern standard time */
ût 03:45 /* When timezone is eastern standard time */
ût 03:45 /* When timezone is eastern standard time */
ût 03:45 /* When timezone is eastern standard time */
2 août 03:45 /* When timezone is eastern standard time */
ût 03:45 /* When timezone is eastern standard time */
ût 03:45 /* When timezone is eastern standard time */
ût 03:45 /* When timezone is eastern standard time */
ût 05:00 /* When timezone is eastern standard time */
上面的小提琴正在以一种方式工作,即当值与上一行相同时,我隐藏日期,这意味着不显示 日期与上一行相同的一行上的日期,以便按日期显示可视的休息时间。
问题陈述:
上面的小提琴运行得很好。我唯一遇到的问题是当月份是法语时 之后不要隐藏一些法语字符或其他内容。在上面的o / p中,ût仍然可见,不应显示。
// we have to iterate backwards...
$($('.schedule-show').get().reverse()).each(function(i, div){
let time = $(div).find('[data-timezone="et"]')
let nextTime = $(div).find('+ .schedule-show [data-timezone="et"]')
if(nextTime[0]){
// check if they dates match
if(nextTime.text().match(/\d+ \w+/)[0] === time.text().match(/\d+ \w+/)[0]){
// "white out" the dates that match
nextTime.html(nextTime.text().replace(/(\d+ \w+)/, "<font color=\"white\">$1</font>"))
}
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="schedule-wrapper" id="js-schedule" data-timezone="et"> /* The value of data-timezone attribute changes on button click from the Screenshot below */
<!-- List of button start -->
<div class="schedule-action-bar">
<div class="schedule-timezone-filter">
Select your timezone:
<ul id="js-timezone-picker">
<li>
<button id="js-time-et" class="" data-timezone="et">ET</button>
</li>
</ul>
</div>
</div>
<!-- List of button end -->
<div class="schedule-show">
<div class="schedule-show-time">
<time datetime="03:45 01-08-2019" data-timezone="et">1 août 03:45</time> /* When timezone is eastern standard time */
</div>
</div>
<div class="schedule-show">
<div class="schedule-show-time">
<time datetime="03:45 01-08-2019" data-timezone="et">1 août 03:45</time> /* When timezone is eastern standard time */
</div>
</div>
<div class="schedule-show">
<div class="schedule-show-time">
<time datetime="03:45 01-08-2019" data-timezone="et">1 août 03:45</time> /* When timezone is eastern standard time */
</div>
</div>
<div class="schedule-show">
<div class="schedule-show-time">
<time datetime="03:45 01-08-2019" data-timezone="et">1 août 03:45</time> /* When timezone is eastern standard time */
</div>
</div>
<div class="schedule-show">
<div class="schedule-show-time">
<time datetime="03:45 01-08-2019" data-timezone="et">1 août 03:45</time> /* When timezone is eastern standard time */
</div>
</div>
<!-- .schedule-show -->
<div class="schedule-show">
<div class="schedule-show-time">
<time datetime="03:45 02-08-2019" data-timezone="et">2 août 03:45</time> /* When timezone is eastern standard time */
</div>
</div>
<div class="schedule-show">
<div class="schedule-show-time">
<time datetime="03:45 02-08-2019" data-timezone="et">2 août 03:45</time> /* When timezone is eastern standard time */
</div>
</div>
<div class="schedule-show">
<div class="schedule-show-time">
<time datetime="03:45 02-08-2019" data-timezone="et">2 août 03:45</time> /* When timezone is eastern standard time */
</div>
</div>
<div class="schedule-show">
<div class="schedule-show-time">
<time datetime="03:45 02-08-2019" data-timezone="et">2 août 03:45</time> /* When timezone is eastern standard time */
</div>
</div>
<!-- .schedule-show -->
<div class="schedule-show">
<div class="schedule-show-time">
<time datetime="05:00 02-08-2019" data-timezone="et">2 août 05:00</time> /* When timezone is eastern standard time */
</div>
</div>
<!-- .schedule-show -->
</div>
答案 0 :(得分:1)
在您的正则表达式中,\w
与带有重音符号(变音符号)的字符不匹配。参见Concrete Javascript Regex for Accented Characters (Diacritics)
您可以用\w
替换正则表达式[A-Za-zÀ-ÖØ-öø-ÿ]
// we have to iterate backwards...
$($('.schedule-show').get().reverse()).each(function(i, div){
let time = $(div).find('[data-timezone="et"]')
let nextTime = $(div).find('+ .schedule-show [data-timezone="et"]')
if(nextTime[0]){
// check if they dates match
if(nextTime.text().match(/\d+ \w+/)[0] === time.text().match(/\d+ \w+/)[0]){
// "white out" the dates that match
nextTime.html(nextTime.text().replace(/(\d+ [A-Za-zÀ-ÖØ-öø-ÿ]+)/, "<font color=\"white\">$1</font>"))
}
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="schedule-wrapper" id="js-schedule" data-timezone="et"> /* The value of data-timezone attribute changes on button click from the Screenshot below */
<!-- List of button start -->
<div class="schedule-action-bar">
<div class="schedule-timezone-filter">
Select your timezone:
<ul id="js-timezone-picker">
<li>
<button id="js-time-et" class="" data-timezone="et">ET</button>
</li>
</ul>
</div>
</div>
<!-- List of button end -->
<div class="schedule-show">
<div class="schedule-show-time">
<time datetime="03:45 01-08-2019" data-timezone="et">1 août 03:45</time> /* When timezone is eastern standard time */
</div>
</div>
<div class="schedule-show">
<div class="schedule-show-time">
<time datetime="03:45 01-08-2019" data-timezone="et">1 août 03:45</time> /* When timezone is eastern standard time */
</div>
</div>
<div class="schedule-show">
<div class="schedule-show-time">
<time datetime="03:45 01-08-2019" data-timezone="et">1 août 03:45</time> /* When timezone is eastern standard time */
</div>
</div>
<div class="schedule-show">
<div class="schedule-show-time">
<time datetime="03:45 01-08-2019" data-timezone="et">1 août 03:45</time> /* When timezone is eastern standard time */
</div>
</div>
<div class="schedule-show">
<div class="schedule-show-time">
<time datetime="03:45 01-08-2019" data-timezone="et">1 août 03:45</time> /* When timezone is eastern standard time */
</div>
</div>
<!-- .schedule-show -->
<div class="schedule-show">
<div class="schedule-show-time">
<time datetime="03:45 02-08-2019" data-timezone="et">2 août 03:45</time> /* When timezone is eastern standard time */
</div>
</div>
<div class="schedule-show">
<div class="schedule-show-time">
<time datetime="03:45 02-08-2019" data-timezone="et">2 août 03:45</time> /* When timezone is eastern standard time */
</div>
</div>
<div class="schedule-show">
<div class="schedule-show-time">
<time datetime="03:45 02-08-2019" data-timezone="et">2 août 03:45</time> /* When timezone is eastern standard time */
</div>
</div>
<div class="schedule-show">
<div class="schedule-show-time">
<time datetime="03:45 02-08-2019" data-timezone="et">2 août 03:45</time> /* When timezone is eastern standard time */
</div>
</div>
<!-- .schedule-show -->
<div class="schedule-show">
<div class="schedule-show-time">
<time datetime="05:00 02-08-2019" data-timezone="et">2 août 05:00</time> /* When timezone is eastern standard time */
</div>
</div>
<!-- .schedule-show -->
</div>
答案 1 :(得分:0)
问题似乎出在正则表达式\w
中,与重音字母不匹配。
您可以: