Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.02.2013, 16:27
Интересующийся
Отправить личное сообщение для rixter Посмотреть профиль Найти все сообщения от rixter
 
Регистрация: 01.02.2013
Сообщений: 11

Помогите с тернарным оператом
Добрый день!

Есть плагин рейтинга для 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 только начинаю знакомство.
Вложения:
Тип файла: zip extravote.zip (720 байт, 4 просмотров)
Ответить с цитированием
  #2 (permalink)  
Старый 01.02.2013, 16:44
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 28,611

rixter,
if (0!=k){
if (1!=b) {

	d=d+extravote_text[5].replace("%s",b);
} else {
	d=d+extravote_text[6].replace("%s",b);
}
};
Ответить с цитированием
  #3 (permalink)  
Старый 01.02.2013, 22:37
Интересующийся
Отправить личное сообщение для rixter Посмотреть профиль Найти все сообщения от rixter
 
Регистрация: 01.02.2013
Сообщений: 11

рони,
Спасибо! Работает. Буду дальше пилить.
Ответить с цитированием
  #4 (permalink)  
Старый 02.02.2013, 22:11
Интересующийся
Отправить личное сообщение для rixter Посмотреть профиль Найти все сообщения от rixter
 
Регистрация: 01.02.2013
Сообщений: 11

Опять я в ступоре.
Собственно изначально была цель разнообразить окончания у "Голос/а/ов"

Привел код в такой вид

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);/*Голоса*/
		}
	}
};

Не работает, в чем может быть дело?
Ответить с цитированием
  #5 (permalink)  
Старый 02.02.2013, 22:48
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 28,611

rixter,
это у вас b.substr(-1); что ? или это b.substr(-2);
Ответить с цитированием
  #6 (permalink)  
Старый 02.02.2013, 23:04
Интересующийся
Отправить личное сообщение для rixter Посмотреть профиль Найти все сообщения от rixter
 
Регистрация: 01.02.2013
Сообщений: 11

Извините, не понял вопроса.
Этот код переделывал с рабочего 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, 02.02.2013 в 23:08.
Ответить с цитированием
  #7 (permalink)  
Старый 02.02.2013, 23:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 28,611

rixter,
всё понятно как и зачем вы делаите, но постарайтесь ответить как программист чем является b_term если ответите верно будет плюшка)))
Ответить с цитированием
  #8 (permalink)  
Старый 02.02.2013, 23:24
Интересующийся
Отправить личное сообщение для rixter Посмотреть профиль Найти все сообщения от rixter
 
Регистрация: 01.02.2013
Сообщений: 11

рони,
дык если б я был программистом
В моем понимании b_term это переменная.
Ответить с цитированием
  #9 (permalink)  
Старый 02.02.2013, 23:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 28,611

rixter,
может это обьект или функция?
Ответить с цитированием
  #10 (permalink)  
Старый 02.02.2013, 23:36
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 28,611

rixter,
небуду мучать что ваш код работал поставьте + в обоих случаях

var b_term = +b.substr(-2);
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с таймером и окошком! xXapokalypsesXx Общие вопросы Javascript 4 07.06.2012 00:12
Помогите с наследованием develka Общие вопросы Javascript 1 06.06.2012 08:50
Помогите разобраться!!! Greendumb Общие вопросы Javascript 8 19.08.2010 13:04
Помогите! Многоуровневые вкладки! sergeeeeee Элементы интерфейса 2 02.08.2010 22:50
Помогите нубу Fongolcs Работа 34 19.05.2010 21:45