Помогите с тернарным оператом 
		
		
			Вложений: 1 
		
		
		Добрый день! 
	Есть плагин рейтинга для joomla - Extra Vote Загвоздка с файлом extravote.js (во вложении). В нем есть следующая строка: 
0!=k&&(d=1!=b?d+extravote_text[5].replace("%s",b):d+extravote_text[6].replace("%s",b));
Не могу разобраться как работает этот код. Нагуглил, что это тернарный оператор, попытался превратить его в простую форму: 
0!=k&&(
if (1!=b) {
	d=d+extravote_text[5].replace("%s",b);
} else {
	d=d+extravote_text[6].replace("%s",b);
}
);
Не работает, что я делаю не так? Да, с javascript только начинаю знакомство.  | 
	
		
 rixter, 
	
if (0!=k){
if (1!=b) {
	d=d+extravote_text[5].replace("%s",b);
} else {
	d=d+extravote_text[6].replace("%s",b);
}
};
 | 
	
		
 рони, 
	Спасибо! Работает. Буду дальше пилить.  | 
	
		
 Опять я в ступоре. 
	Собственно изначально была цель разнообразить окончания у "Голос/а/ов" Привел код в такой вид 
if (0!=k) {
	var b_term = b.substr(-2);
	if (b_term > 10 && b_term < 15) {
		d=d+extravote_text[5].replace("%s",b);/*Голосов*/
	} else {
		var b_term = b.substr(-1);
		if (b_term == 0 || b_term > 4) {
			d=d+extravote_text[5].replace("%s",b);/*Голосов*/
		}
		if (b_term == 1) {
			d=d+extravote_text[6].replace("%s",b);/*Голос*/
		}
		if (b_term > 1 && b_term < 5) {
			d=d+extravote_text[8].replace("%s",b);/*Голоса*/
		}
	}
};
Не работает, в чем может быть дело?  | 
	
		
 rixter, 
	это у вас b.substr(-1); что ? или это b.substr(-2);  | 
	
		
 Извините, не понял вопроса. 
	Этот код переделывал с рабочего php-варианта. Логика такая, взять последние две цифры количества голосов (b): var b_term = b.substr(-2); Если b_term число от 11 по 14: if (b_term > 10 && b_term < 15) то вывести "голосов" Иначе, взять 1 последнюю цифру: var b_term = b.substr(-1); И дальше проверять ее и выводить соответствующий результат. Неправильно определяю b_term? Или может неправильные исходные данные, т.е неверно предположил, что "b" это количество голосов. Хотя в оригинале идет проверка (1!=b).  | 
	
		
 rixter, 
	всё понятно как и зачем вы делаите, но постарайтесь ответить как программист чем является b_term если ответите верно будет плюшка)))  | 
	
		
 рони, 
	дык если б я был программистом :) В моем понимании b_term это переменная.  | 
	
		
 rixter, 
	может это обьект или функция? :-?  | 
	
		
 rixter, 
	небуду мучать что ваш код работал поставьте + в обоих случаях var b_term = +b.substr(-2);  | 
	
		
 раз subtr это метод, то по всей видимости b_term объект. Что ж тогда "b" и можно ли с ней делать такое  b.substr(-2) 
	 | 
	
		
 rixter, 
	substr работает со строками и возвращает строки b_term строка это а чтобы она стала числом ставим впереди +  | 
	
		
 рони, 
	спасибо за помощь и разъяснения, но + не помог. Правильная работа - отметил оценку, появилось сообщение "спасибо за участие" через 2 с новое сообщение "Рейтинг 5.0 (5 Голосов)". Сейчас зависает на "Спасибо за участие". Без + аналогично. Уже завтра буду разбираться, спать охота. Всего доброго!  | 
	
		
 Вроде разобрался, может и велосипед получился, но работает :). Может упростить как-то можно, ну и замечания бы. 
	
var b = b + '';/*В строку*/
var b_term = b.substr(-2);
if (b_term > 10 && b_term < 15) {
	d=d+extravote_text[5].replace("%s",b);/*Голосов*/
} else {
	var b_term = b.substr(-1);
	if (b_term == 0 || b_term > 4) {
		d=d+extravote_text[5].replace("%s",b);/*Голосов*/
	}
	if (b_term == 1) {
		d=d+extravote_text[6].replace("%s",b);/*Голос*/
	}
	if (b_term > 1 && b_term < 5) {
		d=d+extravote_text[8].replace("%s",b);/*Голоса*/
	}
}
var b = +b;/*Обратно в число*/
 | 
	
		
 rixter, 
	есть функция для подобных дел и какие замечания если я незнаю ни де ни бе ни прочих е ))) заработало и хорошо!  | 
	
		
 рони, 
	А что за функция?  | 
	
		
  | 
	
		
 
var b = b + '';/*В строку*/
var b_term = +(b.substr(-2));
(function () {
	if (b_term > 10 && b_term < 15)return d=d+extravote_text[5].replace("%s",b);/*Голосов*/
	b_term = +(b.substr(-1));
	if (b_term == 0 || b_term > 4)return d=d+extravote_text[5].replace("%s",b);/*Голосов*/
	if (b_term == 1)return d=d+extravote_text[6].replace("%s",b);/*Голос*/
	if (b_term > 1 && b_term < 5)return d=d+extravote_text[8].replace("%s",b);/*Голоса*/
}());
var b = +b;/*Обратно в число*/
 | 
	
		
 рони, Deff, 
	Спасибо! Отличный форум! Смотрел также другие ветки, везде помощь, подсказки, конструктивная критика.  | 
	
		
 rixter, 
	на закуску для самобразования Скрипт для создания словесной формы автор Riim, и заодно функция склонения слов после цифры по формуле с http://translate.sourceforge.net/wiki/l10n/pluralforms 
var plural = function (b) {
    return function (a) {
        return b[1 == a % 10 && 11 != a % 100 ? 0 : 2 <= a % 10 && 4 >= a % 10 && (10 > a % 100 || 20 <= a % 100) ? 1 : 2]
    }
};
var d = plural(['голос','голоса','голосов'])
//alert(d(5));
var a = [1,5,56,87,3,2,14,23,41,1090]
a = a.map(function (el)
{
   return el + " " + d(el)
})
alert(a.join('\n'));
 | 
	
		
 рони, 
	Вот за это вообще мегареспект!  | 
	
		
 Добрый день. 
	Предлагаем к рассмотрению и тестированию наш проект - Маркетер Плагин. Продвигаем его успешно во всем мире. Но только 27 января 2013 предоставили в Рунете к тестированию русифицированный плагин с русифицированным интерфейсом. Вся подробная информация наhttp://www.marketerplugin.ru/ Предлагаем протестировать наш плагин на только что русифицированном интерфейсеhttp://www.marketerplugin.ru/test_plagina. В двух словах: плагин предназначен для создания сайтов-визиток и страниц продаж. Ждем ваших комментариев, отзывов и критики. Так же будем рады видеть вас на наших страницах в соц сетях http://www.facebook.com/pages/Marketer-plugin/5288148.. http://vk.com/club46912629 Успехов и новых впечатлений. С уважением, Богдан  | 
| Часовой пояс GMT +3, время: 06:45. |