Страница 1 из 1

JS Проблема с объединением строк.

Добавлено: 07 окт 2010, 00:11
alexei
Перерисовка окна.

Код: Выделить всё

         function VoteType(box, uid) {            box.removeButtons();            var action = '';            var vaction = '';            var code = 'return {"user": API.getProfiles({uids:' + $("#viewerid").val() + ',fields:"rate,has_mobile"}), "settings": API.getUserSettings(), "balance": API.getUserBalance()};';            VK.api("execute", { code: code }, function (data) {                if (data.response.user.rate < 51 || data.response.user.has_mobile == 0 || (data.response.settings & 256) == 0) {                    action = action + 'Для голосования Вы должны: ';                    if (data.response.user.rate < 51) {                        action = action + 'повысить рейтинг как минумум до 51, ';                    }                    if (data.response.user.has_mobile == 0) {                        action = action + 'привязать страницу к телефону, ';                    }                    if ((data.response.settings & 256) == 0) {                        action = action + 'добавить приложение в закладки, ';                    }                    action = action + 'затем у вас появится возможность проголосовать. ';                }                else {                    box.addButton({ label: 'Увеличить на <b>1%</b>', onClick: function () { Vote(uid,0); } });                }                 if (data.response.balance < 100) {                    vaction = '<br/><br/>Что бы повысить рейтинг на 10%, Вам надо пополнить баланс приложения.';                }                else {                    box.addButton({ label: 'Увеличить на <b>10%</b>', onClick: function () { Vote(uid,1); } });                }            });            box.addButton({ label: 'Закрыть', style: "button_no", onClick: function () { box.hide() } });            box.content('Вы можете <b>бесплатно</b> проголосовать звезду. И ее рейтинг увеличится в приложении на <b>1%.</b> Однако голосовать можно один раз за одну звезду.<br/>В целях защиты от спама вводятся ограничения на голосования, пользователь который голосует должен:<br/>1) Иметь рейтинг не меньше <b>51%</b> ВКонтакте.<br/>2) Привязать страницу к телефону.<br/>3) Установить приложение и <a href="javascript:AddFave();" >Добавить в закладки</a>.<br/><br/>Также Вы можете повысить рейтинг звезды на <b>10% за один голос.</b><br/><br/>' + action + vaction);        } 
Если не удовлетворяет условию (data.response.user.rate < 51 || data.response.user.has_mobile == 0 || (data.response.settings & 256) == 0), то должна добавляться строка к box.content. Но переменные action, vaction не изменяются. Скорее всего проблема с лок и глоб переменными, в C# подобное работает. Как реализовать?

Re: JS Проблема с объединением строк.

Добавлено: 07 окт 2010, 22:33
Александр
Уверен, что все условия выполняются?
Попробуй максимально упростить код для отладки. Убери то, что не участвует в нужной части и замени все data.response... - на простые значения.

Re: JS Проблема с объединением строк.

Добавлено: 08 окт 2010, 17:14
alexei
Разобрался. Все перенес в function (data). Теперь работает.