Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.08.2017, 20:35   #1
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию Правильная конкатенация строки и переменной int

кусочек кода:
Код:
 </script>
echo "
$(document).ready(function(){
	for (i = 0; i < 9; i++) {
		  $(\".container\").append(\"<input type='button' id='but\"+i+\"' 
                         value='\"+i+\"' /> \")
		   $('#but'+i).click(function(){
		   document.images['img_'].src='URL/images/$login/StreamDecks_\"+i+\"_.jpg';// загружаем карты нового хода
		   });
		   
		}


	});
";
  </script>
Все нормально, кроме вставки i, где выделено красным. Почему 'but\"+i+\"' и '\"+i+\"'работает, а \"+i+\" или '\"+i+\"' нет? . Пробовал и другие варианты. Как правильно сделать?
На URL не обращайте внимания, адрес там подставлен.

Последний раз редактировалось Illusiony; 23.08.2017 в 21:57.
Illusiony вне форума Ответить с цитированием
Старый 23.08.2017, 21:49   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Illusiony Посмотреть сообщение
Пробовал и другие варианты. Как правильно сделать?
какую кавычку ставите в начале строки, такую же и нужно ставить для закрытия строки.


Цитата:
Сообщение от Illusiony Посмотреть сообщение
document.images['img_'].src='URL/.....
'+i+'.....

если я правильно понял вопрос...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.08.2017, 21:55   #3
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию

Вот так не работает:
Код:
 document.images['img_'].src='URL/images/$login/StreamDecks_'+i+'_.jpg';
Переменная i (int) не подставляется, но в остальном коде все хорошо подставляется.

Последний раз редактировалось Illusiony; 23.08.2017 в 21:58.
Illusiony вне форума Ответить с цитированием
Старый 23.08.2017, 22:07   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Вы этот код, судя по всему, используете в PHP скрипте.

так вот, у меня этот код генерит вполне адекватное.
что-то вроде:
Код:

$(document).ready(function(){
	for (i = 0; i < 9; i++) {
		  $(".container").append("<input type='button' id='but"+i+"' 
                         value='"+i+"' /> ")
		   $('#but'+i).click(function(){
		   document.images['img_'].src='URL/images/vash_login/StreamDecks_'+i+'_.jpg';// загружаем карты нового хода
		   });
		   
		}


	});
а вот так, по простому, я проверил, что всё работает:
PHP код:
<?php

$login
='vash_login';
echo 
"
<script>
    for (i = 0; i < 9; i++) {
           alert('URL/images/
$login/StreamDecks_'+i+'_.jpg');// загружаем карты нового хода
    }
</script>
"
;
?>
получаем такой код в браузере:
Код HTML:
<html><head><script>
	for (i = 0; i < 9; i++) {
		   alert('URL/images/vash_login/StreamDecks_'+i+'_.jpg');// загружаем карты нового хода
	}
</script>
</head><body></body></html>
что не так?


Цитата:
Сообщение от Illusiony Посмотреть сообщение
document.images['img_']
кстати, а разве в имени не нужно подставлять img_0, img_1 и т.д. ?

Последний раз редактировалось Serge_Bliznykov; 23.08.2017 в 22:09.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.08.2017, 22:12   #5
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию

Создается 9 кнопок и при нажатии на любую должна загружаться картинка со своим путем, но всем кнопкам присваивается почему то 9,а не 9 вариантов 0,1,2,3,4,5,6,7,8.

Похоже я ввел Вас в заблуждение, ошибка видимо не в конкатенации, а в цикле.
Вообще не понимаю откуда берется 9? если условие <9
Illusiony вне форума Ответить с цитированием
Старый 23.08.2017, 22:14   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Illusiony Посмотреть сообщение
Создается 9 кнопок и при нажатии на любую должна загружаться картинка со своим путем, но всем кнопкам присваивается почему то 9,а не 9 вариантов 0,1,2,3,4,5,6,7,8.
проблема тут:

Цитата:
Сообщение от Illusiony Посмотреть сообщение
document.images['img_'].src
туда тоже добавьте +i

Код:
document.images['img_'+i].src=
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.08.2017, 22:17   #7
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию

Рисунок один и тот же, просто меняется путь для перезагрузки этого рисунка. Поэтому +i там не нужно
Illusiony вне форума Ответить с цитированием
Старый 23.08.2017, 22:29   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Illusiony Посмотреть сообщение
Рисунок один и тот же, просто меняется путь для перезагрузки этого рисунка. Поэтому +i там не нужно
понял Вас.


Цитата:
Сообщение от Illusiony Посмотреть сообщение
Вообще не понимаю откуда берется 9? если условие <9
а это, кстати, хороший вопрос!
9 не должно быть.
может быть, где-то ещё есть присвоение?

и вообще, открывайте в отладчике вашего браузера полученный код страницы (после работы скрипта) и смотрите DOM.

либо поставьте точку остановка внутри цикла в скрипте и смотрите, что там происходит.

отлаживать код на JS умеете? тогда - ВПЕРЁД!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 24.08.2017, 06:02   #9
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Пояснения тут - StackOverflow.
Код:
function getFun(val) {
    return function() { alert('URL/images/$login/StreamDecks_' + val + '_.jpg'); };
}
$(document).ready(function() {
    for (i = 0; i < 9; i++) {
        $('.container').append("<input type='button' id='but" + i + "'value='" + i + "' />");
        $('#but' + i).click(getFun(i));
    };
});
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 24.08.2017, 20:54   #10
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию

Огромное спасибо. Сделал вот так:
Код:
 for (let i = 0; i < 9; i++) {
Остальное оставил без изменений.
Illusiony вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь - считать в другую переменную 3 последних бита числа из переменной int Анастасия_1992 Visual C++ 9 08.01.2016 18:29
Проверка в строки на число типа int Assemblerru Общие вопросы C/C++ 5 01.06.2011 13:32
функция float average(int arrray[],int from,int to) yuliyayuliya Помощь студентам 0 25.04.2011 21:55
Запуск вшеншнего приложения с параметром от переменной INT Leximus Общие вопросы Delphi 3 02.10.2010 15:37
INT 10H Вывод строки ADA Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 14.05.2009 09:44