Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Не передается строковая переменная (https://javascript.ru/forum/dom-window/57833-ne-peredaetsya-strokovaya-peremennaya.html)

scorpion95 21.08.2015 20:58

Не передается строковая переменная
 
Вот часть кода, с которой трудности
var JSON;
var i;


function inboxmessageslist(){
	$.ajax({
		url: "php/getinboxmessageslist.php",
		type: "GET",
		dataType: "json",
		async: false,
		data: { login:getCookie('login') },
		success: function(json){
			for(var i = 0; i < json.length; i++){
				JSON[i] = 'asd';
				$('#inbox_messages_content').append('<div class="personal-message"><img src=' + getavatar(json[i].sender) + ' class="message-avatar" onclick="userprofile(' + JSON[i] + ')"></img></div>');
			}
	});
}

function userprofile(user){
	alert(user);
}


При клике функция не работает, а в логах консоли пишет - Uncaught ReferenceError: asd is not defined

А когда пишу вместо JSON[i] = 'asd'; на пример JSON[i] = 3;, то цифра успешно передается в функцию и выводится alert'ом. Почему же строковая переменная не передается? Помогите плиз, кто шарит. А то я голову сломал себе уже.

scorpion95 22.08.2015 12:10

Парни хелп плиз.

scorpion95 22.08.2015 15:50

Неужели кто не знает как решить вопрос?

EmperioAf 23.08.2015 21:00

Цитата:

Сообщение от scorpion95
Uncaught ReferenceError: asd is not defined

Судя по ошибке после клика интерпретатор ищет переменную asd и выдаёт ошибку, т.к. в этом коде:
userprofile(' + JSON[i] + ')

переменной asd нет.
Вот пример как можно исправить это:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="Keywords" content="">
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ГГ</title>

<style>
*{
    margin:0;
    padding:0;
    outline: 0;
}

.button {
    width: 200px;
    height: 200px;
    border: 1px solid red;
    background: #08c;
    margin: 20px;
}

.innerbutton {
    width: 100px;
    height: 100px;
    background: green;
}
</style>
</head>
<body>
<div class="button">Жми</div>
<div class="button">Результат</div>
<script>
var a = document.querySelector('.button:first-child');
var b = document.querySelector('.button:nth-child(1)');
var b1 = 3;
var b2 = 'asd';
a.onclick = function(){
  b.innerHTML = "<div class='innerbutton' onclick=\"userprofile("+"\'"+b2+"\'"+")\"></div>";
}

function userprofile(user){
  alert(user);
}
</script>
</body>

</html>

в общем надо использовать \' и \" если нужно чтобы была строка, а не переменная

join 23.08.2015 22:59

Цитата:

Сообщение от EmperioAf (Сообщение 385319)
в общем надо использовать \' и \" если нужно чтобы была строка, а не переменная

Лучше не использовать. И без слешей может работать с переменными и строками.

http://jsfiddle.net/xtwsvd3w/


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