Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Ошибка при клике (https://javascript.ru/forum/misc/56297-oshibka-pri-klike.html)

Зосимов 09.06.2015 08:21

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

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

подскажите пожалуйста, как правильно вызвать функцию при клике и передать значение?

ksa 09.06.2015 08:55

Цитата:

Сообщение от Зосимов
подскажите пожалуйста, как правильно вызвать функцию при клике и передать значение?

Я х/з откуда у тебя берется val.name... Но, как вариант

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

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

Зосимов 09.06.2015 09:15

$.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>");
          });
    });


вот так выглядит примерно

Зосимов 09.06.2015 09:16

Цитата:

Сообщение от ksa (Сообщение 374416)
Я х/з откуда у тебя берется 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

Зосимов 09.06.2015 09:23

$.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>");
          });

попробовал так. передается только последнее значение из списка..

ksa 09.06.2015 09:44

Цитата:

Сообщение от Зосимов (Сообщение 374418)
$.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>");
          });
    });


вот так выглядит примерно

Уже хоть что-то! :D

<!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>

Тестовые примеры учись делать...

Зосимов 09.06.2015 09:56

Цитата:

Сообщение от ksa (Сообщение 374423)
Уже хоть что-то! :D

Спасибо.

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

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

ksa 09.06.2015 09:59

Зосимов, мой код абсолютно рабочий, это видно из работающего примера... Почему и где не работает именно у тебя - я х/з. :)

Зосимов 09.06.2015 10:34

Цитата:

Сообщение от ksa (Сообщение 374429)
Зосимов, мой код абсолютно рабочий, это видно из работающего примера... Почему и где не работает именно у тебя - я х/з. :)

выше я привел пример

ksa 09.06.2015 11:11

Цитата:

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

Экранировать...

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


Часовой пояс GMT +3, время: 00:56.