Правильные числительные
javascript, 26.09.2009 Суббота, 17:58
Теги:
Теги:

Я нашел достаточно простой и быстрый способ решения этой проблемы. Мой скрипт поможет правильно расставить существительные в правильной форме и ваши записи превратятся в 100 комментариев и 3 ответа. Скрипт работает во всех браузерах. Пример использования скрипта можно посмотреть в моем блоге.
Для установки скрипта, скажем, в ваш блог, поместите число комментариев в span* с соответствующим классом**. Пример:
Code
<!-- Было -->
Комментарии:<b>$COMMENTS_NUM$</b>
<!-- Стало -->
<b><span class='comms'>$COMMENTS_NUM$</span></b>
Комментарии:<b>$COMMENTS_NUM$</b>
<!-- Стало -->
<b><span class='comms'>$COMMENTS_NUM$</span></b>
Затем в конец страницы вставьте скрипт:
Code
<script type="text/javascript">
setNum = function(c,n){
var a,b,i,d;
a = document.all||document.getElementsByTagName('*');
for(b=0;b<a.length;b++){if(new RegExp("(^|\\b)"+c+"(\\b|$)").test(a[b].className)){
i = function(){
d = parseFloat(a[b].innerHTML);
if(!d){return n[2]}else
if(d%1){return n[1]}else
if(/(11|12|13|14|5|6|7|8|9|0)$/.test(d)){return n[2]}else
if(/1$/.test(d)){return n[0]}else
if(/(2|3|4)$/.test(d)){return n[1]}
};
a[b].innerHTML=i().replace(/\{N\}/,d||0);
}}
}
</script>
setNum = function(c,n){
var a,b,i,d;
a = document.all||document.getElementsByTagName('*');
for(b=0;b<a.length;b++){if(new RegExp("(^|\\b)"+c+"(\\b|$)").test(a[b].className)){
i = function(){
d = parseFloat(a[b].innerHTML);
if(!d){return n[2]}else
if(d%1){return n[1]}else
if(/(11|12|13|14|5|6|7|8|9|0)$/.test(d)){return n[2]}else
if(/1$/.test(d)){return n[0]}else
if(/(2|3|4)$/.test(d)){return n[1]}
};
a[b].innerHTML=i().replace(/\{N\}/,d||0);
}}
}
</script>
Code
<script type="text/javascript">
// в квадратных скобках нужное существительное в 3 разных видах
// в именительном, родительном, и родительном в множественном числе
// в каждой строчке {N} заменяется на число
// не перепутайте последовательность!
setNum('comms',['<b>{N}</b> комментарий','<b>{N}</b> комментария','<b>{N}</b> комментариев']);
</script>
// в квадратных скобках нужное существительное в 3 разных видах
// в именительном, родительном, и родительном в множественном числе
// в каждой строчке {N} заменяется на число
// не перепутайте последовательность!
setNum('comms',['<b>{N}</b> комментарий','<b>{N}</b> комментария','<b>{N}</b> комментариев']);
</script>
* не обязательно span, можно и любой другой элемент.
** класс должен быть один для каждой отдельной группы. Например для комментариев - comms.
ВИДЕОДЕСЕРТ
Сегодня на десерт один из мультиков серии про животных Саймона и их приключения. Мне искренне нравятся эти короткие анимационные зарисовки. Надеюсь, понравятся и вам.:
28, 38, 3453

Что-то еще что ли нужно сделать?