widgin

Рейтинг
41
Регистрация
14.11.2012
Blomm:
Конечно, дискуссионная идея, но, как мне кажется, ютубу пора вводить абонентку для авторов, пусть даже это будет символическая сумма в пару баксов в месяц за один канал или полбакса за видео. Получится что-то типа хостинга для видео, но с возможностью заработка.

Скорее уж тогда за кол-во подписчиков. Например до 1000 - 2$ в месяц. От 1000 до 10000 5$ и т.д. Но уж никак не 0,5$ за каждое видео.

demiux:
Document.querySelector() - Возвращает первый элемент внутри документа. Вам нужен Document.querySelectorAll()

Для IE 9 и выше
document.querySelectorAll('span.currency').forEach(function(span){

span.innerHTML = currency;
});

или на jquery
$('span.currency').each(function(){

this.innerHTML = currency;
});


Еще бы порекомендовал, для правильной индексации, значение по умолчанию сразу выводить в span на сервере.
А js поменять на такой:
var currency;

switch (ymaps.geolocation.country) {
case 'Казахстан':
currency = '5000 тенге';
break;
case 'Беларусь':
currency = '1000 бел. рублей';
break;
}

if(currency) {
document.querySelectorAll('span.currency').forEach(function(span){
span.innerHTML = currency;
});
}

Благодарю вас. А в мобильных браузерах все это будет нормально работать?

demiux:
Я так понимаю их много, в каждом своя цена? Опишите подробней.

Этих тегов <span class="currency"></span> несколько на странице. Но цена у них одна. Та стоимость, которая присвоена в зависимости от страны с помощью уже этой рабочей версии скрипта.


<!-- Geo -->
<script src="http://yastatic.net/jquery/2.1.1/jquery.min.js"></script>
<script src="http://api-maps.yandex.ru/2.0-stable/?load=package.standard&lang=ru-RU"type="text/javascript"></script>
<script type="text/javascript">
window.onload =function(){
jQuery(".user-city").text(ymaps.geolocation.city);
jQuery(".user-region").text(ymaps.geolocation.region);
jQuery(".user-country").text(ymaps.geolocation.country);
var currency = '1000 рублей';
switch (ymaps.geolocation.country) {
case 'Казахстан':
currency = '5000 тенге';
break;
case 'Беларусь':
currency = '1000 бел. рублей';
break;
}
document.querySelector('span.currency').innerHTML = currency;
}
</script>
<!-- /Geo -->

Если к примеру страна определилась как Казахстан, то везде в <span class="currency"></span> должно быть 5000 тенге. Но проблема в том, что отображается эта стоимость только одни раз на странице, там где тег span указан первым. Как если бы вместо class бул указан id, и при этом продублирован. Я так понимаю проблема в этой части когда:

document.querySelector('span.currency').innerHTML = currency

Но что именно не так, мне не понятно.

И все-таки этот span со стоимостью <span class="currency"></span> отображается только первый указанный на странице. Все остальные не выводят содержимое. Помогите, пожалуйста, исправить проблему.

demiux:
Думаю из-за того, что теги незакрыты.
<span>...</span>
http://htmlbook.ru/html/span

Да, точно :). Я уже сплю наполовину. Еще раз спасибо. Вы мне очень помогли.

demiux:
Лишние } стоят. Загляните в консоль браузера в хроме и FF: ctrl+shift+i. Там увидите ошибки.
Вот так должно работать. default не обязателен, по умолчанию будет 1000 рублей.
var currency = '1000 рублей';

switch (ymaps.geolocation.country) {
case 'Казахстан':
currency = '5000 тенге';
break;
case 'Беларусь':
currency = '1000 бел. рублей';
break;
}
document.querySelector('span.currency').innerHTML = currency;

Спасибо огромное, теперь все почти заработало. Почему-то только не получается выводить все теги span в одном div. Отображается только значение первого указанного span тега.

Попробовал я сегодня все это реализовать. Но, к сожалению, ничего не получилось.


<!-- Geo -->
<script type="text/javascript">
<script src="http://yastatic.net/jquery/2.1.1/jquery.min.js"></script>
<script src="http://api-maps.yandex.ru/2.0-stable/?load=package.standard&lang=ru-RU"type="text/javascript"></script>
<script type="text/javascript">
window.onload =function(){
jQuery(".user-city").text(ymaps.geolocation.city);
jQuery(".user-region").text(ymaps.geolocation.region);
jQuery(".user-country").text(ymaps.geolocation.country);
switch (ymaps.geolocation.country) {
case 'Казахстан':
var currency = '5000 тенге';
document.querySelector('span.currency').innerHTML = currency;}
break;
case 'Беларусь':
var currency = '1000 бел. рублей';
document.querySelector('span.currency').innerHTML = currency;}
break;
default:
var currency = '1000 рублей';
document.querySelector('span.currency').innerHTML = currency;}
}
}
<!-- /Geo -->

Не одно из значений в html вывести не получается.

<div>

<span class="user-city">
<span class="user-region">
<span class="user-country">
<span class="currency">
</div>

Подскажите, пожалуйста, правильный вариант.

demiux:
Так switch фактически такой же как в php.
switch (ymaps.geolocation.country) {
case 'Россия':
// делаем что нам нужно
break;

default:
// тут значение по умолчанию
}

На сервер можно отправить так
$.ajax({
type: "POST",
url: "some.php",
data: "country=" + ymaps.geolocation.country,
success: function(msg){
alert( "Прибыли данные: " + msg );
}
});

Тут все подробно расписано.

Спасибо большое, завтра попробую разобраться. Надеюсь получится.

smbbws:
Имхо делать перерасчет в джаваскрипте неудобно, поэтому лучше воспользоваться sypexgeo.net там есть пхп файл с примером определения страны.

В пхп скрипте смотрите из какой страны пользователь, выводите ему цены в своих валютах со своим курсом.

Не думаю, что мне это будет проще. Во-первых он платный. А во-вторых в нем также придется, все это дописывать под себя. И опять же не факт, что я разберусь сам.

Возможно вы меня не правильно поняли. Или может я вас. Зачем там что-то пересчитывать? Ведь новые данные можно сказать произвольные. Мне же не нужно конвертировать валюты или что-то подобное. По сути в место 1000 рублей можно задать что угодно. Мне необходимо чтобы скрипт проверял значение user-country. И в случае нахождения в значении той или иной страны присваивал новой переменой то или иное значение. Что-то на подобии оператора switch в php.

---------- Добавлено 08.02.2017 в 22:27 ----------

Подскажите хотя бы кто-нибудь как передать значение .user-country в переменную php. А там уж я дальше сам разберусь.

danforth:
А вы наоборот сделайте, фрейм в popupе.

Грузите модальное окно ваше, внутри вставляете:

<iframe src="http://site.ru/popup.html" frameborder="no" scrolling="no">
iframe not supported in your browser
</iframe>

Спасибо большое, все получилось.

Всего: 60