Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.06.2015, 08:21
Кандидат Javascript-наук
Отправить личное сообщение для Зосимов Посмотреть профиль Найти все сообщения от Зосимов
 
Регистрация: 11.02.2013
Сообщений: 102

Ошибка при клике
Всем привет.
есть кнопка которая вызывает некоторую функцию -
<button class='zakaz' onclick=showPopup3("+val.name+")>Заказать</button>

но при таком раскладе функция showPopup3 не вызывается происходит ошибка - ncaught SyntaxError: missing ) after argument list
Пробовал так -
onclick=showPopup3('"+val.name+"')
получаю другую ошибку - Uncaught SyntaxError: Unexpected token ILLEGAL

подскажите пожалуйста, как правильно вызвать функцию при клике и передать значение?
Ответить с цитированием
  #2 (permalink)  
Старый 09.06.2015, 08:55
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,225

Сообщение от Зосимов
подскажите пожалуйста, как правильно вызвать функцию при клике и передать значение?
Я х/з откуда у тебя берется val.name... Но, как вариант

<button class='zakaz' onclick='showPopup3(val.name)'>Заказать</button>

Или
<button class='zakaz' onclick='showPopup3("'+val.name+'")'>Заказать</button>
Ответить с цитированием
  #3 (permalink)  
Старый 09.06.2015, 09:15
Кандидат Javascript-наук
Отправить личное сообщение для Зосимов Посмотреть профиль Найти все сообщения от Зосимов
 
Регистрация: 11.02.2013
Сообщений: 102

$.getJSON('http://site.ru/json.php',function(data){      
        $.each(data, function(key, val) { 
            $('#showItem').append("<li><div class='list-block'>"+val.name+"</div><button class='zakaz' onclick='showPopup3(val.name)'>Заказать</button></li>");
          });
    });


вот так выглядит примерно
Ответить с цитированием
  #4 (permalink)  
Старый 09.06.2015, 09:16
Кандидат Javascript-наук
Отправить личное сообщение для Зосимов Посмотреть профиль Найти все сообщения от Зосимов
 
Регистрация: 11.02.2013
Сообщений: 102

Сообщение от ksa Посмотреть сообщение
Я х/з откуда у тебя берется val.name... Но, как вариант

<button class='zakaz' onclick='showPopup3(val.name)'>Заказать</button>

Или
<button class='zakaz' onclick='showPopup3("'+val.name+'")'>Заказать</button>
первый вариант - ReferenceError: val is not defined
второй - missing ) after argument list
Ответить с цитированием
  #5 (permalink)  
Старый 09.06.2015, 09:23
Кандидат Javascript-наук
Отправить личное сообщение для Зосимов Посмотреть профиль Найти все сообщения от Зосимов
 
Регистрация: 11.02.2013
Сообщений: 102

$.each(data, function(key, val) { 
       nm = val.name;
            $('#showItem').append("<li><div class='list-block'>"+val.name+"</div><button class='zakaz' onclick='showPopup3(nm)'>Заказать</button></li>");
          });

попробовал так. передается только последнее значение из списка..
Ответить с цитированием
  #6 (permalink)  
Старый 09.06.2015, 09:44
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,225

Сообщение от Зосимов Посмотреть сообщение
$.getJSON('http://site.ru/json.php',function(data){      
        $.each(data, function(key, val) { 
            $('#showItem').append("<li><div class='list-block'>"+val.name+"</div><button class='zakaz' onclick='showPopup3(val.name)'>Заказать</button></li>");
          });
    });


вот так выглядит примерно
Уже хоть что-то!

<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
<link rel='stylesheet type=text/css href=tmp.css' />
<link rel="stylesheet/less" type="text/css" href="style.less">
<script src="http://cdnjs.cloudflare.com/ajax/libs/less.js/2.5.0/less.min.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function(){
	var data=[
		{name: 'Вася'},
		{name: 'Петя'},
		{name: 'Лена'},
		{name: 'Таня'}
	];
	$.each(data, function(key, val) { 
		var html="<li><div class='list-block'>"+val.name
		html+="</div><button class='zakaz' onclick='alert(\""
		html+=val.name+"\")'>Заказать</button></li>";
		$('#test').append(html);
	});
});
</script>
</head>
<body>
<ul id='test'></ul>
</body>
</html>

Тестовые примеры учись делать...
Ответить с цитированием
  #7 (permalink)  
Старый 09.06.2015, 09:56
Кандидат Javascript-наук
Отправить личное сообщение для Зосимов Посмотреть профиль Найти все сообщения от Зосимов
 
Регистрация: 11.02.2013
Сообщений: 102

Сообщение от ksa Посмотреть сообщение
Уже хоть что-то!
Спасибо.

Дошло что в некоторых именах у меня использованы двойные скобки. Они как раз вызывают ошибку.
что можно с ними сделать?

например
var data=[
        {name: 'Вася'},
        {name: 'Петя "Воин"'},
        {name: 'Лена'},
        {name: 'Таня'}
    ];

Последний раз редактировалось Зосимов, 09.06.2015 в 09:58.
Ответить с цитированием
  #8 (permalink)  
Старый 09.06.2015, 09:59
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,225

Зосимов, мой код абсолютно рабочий, это видно из работающего примера... Почему и где не работает именно у тебя - я х/з.
Ответить с цитированием
  #9 (permalink)  
Старый 09.06.2015, 10:34
Кандидат Javascript-наук
Отправить личное сообщение для Зосимов Посмотреть профиль Найти все сообщения от Зосимов
 
Регистрация: 11.02.2013
Сообщений: 102

Сообщение от ksa Посмотреть сообщение
Зосимов, мой код абсолютно рабочий, это видно из работающего примера... Почему и где не работает именно у тебя - я х/з.
выше я привел пример
Ответить с цитированием
  #10 (permalink)  
Старый 09.06.2015, 11:11
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,225

Сообщение от Зосимов
Дошло что в некоторых именах у меня использованы двойные скобки. Они как раз вызывают ошибку.
что можно с ними сделать?
Экранировать...

var data=[
        {name: 'Вася'},
        {name: 'Петя \"Воин\"'},
        {name: 'Лена'},
        {name: 'Таня'}
    ];
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При отправке формы Аяксом возникает ошибка Veterinar jQuery 0 19.01.2014 14:39
Как получить innerHTML при клике prope Общие вопросы Javascript 3 10.01.2014 17:13
Изменение размера элемента при клике Derekovich Элементы интерфейса 25 05.12.2013 20:45
Смена фона картинки при клике на иконку Letto Элементы интерфейса 2 08.11.2013 18:31
Смена id при клике Nestor Общие вопросы Javascript 6 04.03.2009 19:10