Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 03.08.2017, 15:53
Кандидат Javascript-наук
Отправить личное сообщение для AlexTrader Посмотреть профиль Найти все сообщения от AlexTrader
 
Регистрация: 23.12.2016
Сообщений: 121

Я понимаю, нет предела совершенству, но возможно ли ещё усовершенствовать метод?
Ответить с цитированием
  #12 (permalink)  
Старый 03.08.2017, 15:57
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,213

Сообщение от AlexTrader
Сделал так
Неужели ты не видишь циклы? Любое повторение с изменением одного параметра - уже цикл!
Ответить с цитированием
  #13 (permalink)  
Старый 03.08.2017, 15:57
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,213

Сообщение от AlexTrader
но возможно ли ещё усовершенствовать метод?
Разумеется!
Ответить с цитированием
  #14 (permalink)  
Старый 03.08.2017, 16:04
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

app.ratingTooltipTpl = function (e) {
        var res = "<div id='set-rating" + e.chainId + "'>";
        var rate = e.rating;
        var spanArr = [];

        for (var i = 1; i <= 5; ++i) {
            spanArr.push("<span rate=" + i + " chainId=" + e.chainId + " class='action-tooltip rating-empty' onclick='setRating(this)'></span>");
        }
        	var a = "empty", b = "yellow-star"
        switch (rate) {
            case 1:
                spanArr[0].replace(a, b);
                break;
            case 2:
                spanArr[0].replace(a, b);
                spanArr[1].replace(a, b);
                break;
            case 3:
                spanArr[0].replace(a, b);
                spanArr[1].replace(a, b);
                spanArr[2].replace(a, b);
                break;
            case 4:
                spanArr[0].replace(a, b);
                spanArr[1].replace(a, b);
                spanArr[2].replace(a, b);
                spanArr[3].replace(a, b);
                break;
            case 5:
                spanArr[0].replace(a, b);
                spanArr[1].replace(a, b);
                spanArr[2].replace(a, b);
                spanArr[3].replace(a, b);
                spanArr[4].replace(a, b);
                break;
        }

        var spans = spanArr.join();
        res += spans;
        res = res + "</div></br>Баллы:<span id='rating-rate" + e.chainId + "'>"+rate+"</span>";
        return res;
    };


смотри сколько буков я тебе сократил!
Ответить с цитированием
  #15 (permalink)  
Старый 03.08.2017, 16:06
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,213

Сообщение от j0hnik
смотри сколько буков я тебе сократил!
Мои 5коп...

app.ratingTooltipTpl = function (e) {
        var res = "<div id='set-rating" + e.chainId + "'>";
        var rate = e.rating;
        var spanArr = [];
		var val=" chainId=" + e.chainId + " class='action-tooltip rating-empty' onclick='setRating(this)'></span>";
        for (var i = 0; i < 5; ++i) {
            spanArr[i]="<span rate=" + (i+1) + val;
        }
		for (i=0; i<rate; i++) {
			spanArr[i].replace("empty", "yellow-star");
		}
        var spans = spanArr.join("");
        res += spans;
        res = res + "</div></br>Баллы:<span id='rating-rate" + e.chainId + "'>"+rate+"</span>";
        return res;
    };

Не тестил конечно...

Последний раз редактировалось ksa, 03.08.2017 в 16:09.
Ответить с цитированием
  #16 (permalink)  
Старый 03.08.2017, 16:07
Кандидат Javascript-наук
Отправить личное сообщение для AlexTrader Посмотреть профиль Найти все сообщения от AlexTrader
 
Регистрация: 23.12.2016
Сообщений: 121

смотри сколько буков я тебе сократил!

Круто конечно, но всё равно портянка...
Ответить с цитированием
  #17 (permalink)  
Старый 03.08.2017, 16:13
Кандидат Javascript-наук
Отправить личное сообщение для AlexTrader Посмотреть профиль Найти все сообщения от AlexTrader
 
Регистрация: 23.12.2016
Сообщений: 121

Есть такой вариант:
app.ratingTooltipTpl = function (e) {
        var div = $("<div></div>").attr({ "id": "set-rating" + e.chainId });
        var starSpan = $("<span></span>").attr({
            "rate": 0,
            "chainId": e.chainId,
            "class": "action-tooltip rating-empty",
            "onclick": "setRating(this)"
        });
        var spanArr = [];
        for (var i = 1; i <= 5; ++i) {
            spanArr.push(starSpan.clone().attr("rate", i));
        }
        var spans = spanArr.join("");
        div.append(spans);


        var rateSpan = $("<span></span>").attr({ "id": "rating-rate" + e.chainId });
        div.append("</br>Баллы:");
        div.append(rateSpan);
        return div;
    };

Но вот это не работает:
var spans = spanArr.join("");
        div.append(spans);

И смены классов нет
Ответить с цитированием
  #18 (permalink)  
Старый 03.08.2017, 16:52
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,213

Или вообще так...

app.ratingTooltipTpl = function (e) {
	var res = "<div id='set-rating" + e.chainId + "'>";
	for (var i = 0; i < 5; ++i) {
		var cls='rating-'+(i<e.rating)? 'yellow-star': 'empty';
		res+="<span rate=" + (i+1) + " chainId=" + e.chainId + " class='action-tooltip "+cls+"' onclick='setRating(this)'></span>";
	};
	res +="</div></br>Баллы:<span id='rating-rate" + e.chainId + "'>"+e.rating+"</span>";
	return res;
};
Ответить с цитированием
  #19 (permalink)  
Старый 03.08.2017, 17:05
Кандидат Javascript-наук
Отправить личное сообщение для AlexTrader Посмотреть профиль Найти все сообщения от AlexTrader
 
Регистрация: 23.12.2016
Сообщений: 121

ksa,
Немного подправил, спасибо, работает!
app.ratingTooltipTpl = function (e) {
        var res = "<div id='set-rating" + e.chainId + "' class='set-rating'>";
        for (var i = 0; i < 5; ++i) {
            var cls = 'rating-' + ((i < e.rating) ? 'yellow-star' : 'empty');
            res += "<span rate=" + (i + 1) + " chainId=" + e.chainId + " class='action-tooltip " + cls + "' onclick='setRating(this)'></span>";
        };
        res += "</div></br>Баллы:<span id='rating-rate" + e.chainId + "'>" + e.rating + "</span>";
        return res;
    };
Ответить с цитированием
  #20 (permalink)  
Старый 03.08.2017, 17:15
Кандидат Javascript-наук
Отправить личное сообщение для AlexTrader Посмотреть профиль Найти все сообщения от AlexTrader
 
Регистрация: 23.12.2016
Сообщений: 121

ksa,
А такой вариант возможно доработать?
app.ratingTooltipTpl = function(e) {
        var div = $("<div></div>").attr({ "id": "set-rating" + e.chainId, "class": "set-rating" });
        var starSpan = $("<span></span>").attr({
            "rate": 0,
            "chainId": e.chainId,
            "class": "rating-empty",
            "onclick": "setRating(this)"
        });

        for (var i = 1; i <= 5; ++i) {
            var span = starSpan.clone();
            span.attr("rate", i);
            span.attr("class", "rating-" + ((i < e.rating) ? "yellow-star" : "empty"));
            div.append(span);
        }

        var rateSpan = $("<span></span>").attr({ "id": "rating-rate" + e.chainId });
        div.append("</br>Баллы:");
        div.append(rateSpan);
        return div;
    }
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача результата функции, другой функции Aleksandr Chirkov Элементы интерфейса 3 24.06.2017 17:32
Можно ли так использовать callback функции? Denwf Node.JS 2 14.03.2017 10:20
Добавление функции внутрь другой функции Lion_astana jQuery 9 28.12.2013 14:33
Установить имя конструктора Андрей Параничев Общие вопросы Javascript 8 17.11.2011 10:09
arguments вызвавшей функции mister_maxim Общие вопросы Javascript 4 12.10.2010 16:21