powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / jquery + json генерация кнопок с условием отображения
10 сообщений из 10, страница 1 из 1
jquery + json генерация кнопок с условием отображения
    #38042600
ecivgamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем!

Пытаюсь сгенерировать кнопки, условия отображения которых описаны в json. Подскажите, как сделать. К слову, БЕЗ условий отображения кнопки генерируются успешно:
http://www.sql.ru/forum/actualthread.aspx?tid=983228


код json:

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
{
    "Caption": "Module caption",
    "IconsDirectory": "C://Images/",
    "Buttons": [
        {
            "Conditions": [
                {
                    "ConditionText": "1 == 1",
                    "ButtonText": "Text1",
                    "Visible": true,
                    "Colors": {
                        "FontColor": "#FFFFFF",
                        "BGColor": "#00FF00"
                    },
                    "Size": {
                        "Width": 200,
                        "Height": 50
                    },
                    "Icon": {
                        "FileName": "Smile.png",
                        "Width": 16,
                        "Height": 16
                    },
                    "Url": {
                        "UrlAddress": "http://www.google.com",
                        "OpenNewWindow": true
                    },
                    "JavaScriptAction": {
                        "Text": "alert('ok');"
                    }
                },
                {
                    "ConditionText": "2 == 2",
                    "ButtonText": "Text2",
                    "Visible": true,
                    "Colors": {
                        "FontColor": "#FFFFFF",
                        "BGColor": "#00FF00"
                    },
                    "Size": {
                        "Width": 200,
                        "Height": 50
                    },
                    "Icon": {
                        "FileName": "Smile.png",
                        "Width": 16,
                        "Height": 16
                    },
                    "Url": {
                        "UrlAddress": "http://www.google.com",
                        "OpenNewWindow": true
                    },
                    "JavaScriptAction": {
                        "Text": "alert('ok');"
                    }
                }
            ]
        }
    ]
}




код html:

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
<html>
<head>
<title>SMButtons</title>
<script src="jquery/jquery-1.4.2.js"></script>
<script type="text/javascript">        
//When document loaded.
$(document).ready(function(){  
// Get data from file as JSON
           $.getJSON('weekendtask.json', function(data) {
       var buttons = data.Buttons;
          $.each(buttons, function(key, val)
          {    
                   $('<li><input type="button" onClick="'+ val.JavaScriptAction +'" value="'+ val.ButtonText +'"/></li>').appendTo('#ulObj');
          });
  });        
  });
  </script>
</head>
<body>
<br>
<br>
<div>
<ul id='ulObj'>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
</div>
</body>
</html>
...
Рейтинг: 0 / 0
jquery + json генерация кнопок с условием отображения
    #38042623
Фотография iConst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ecivgamer,

Да точно так же - добавив нужные элементы:
Код: javascript
1.
'... style="color:' + val.Conditions.FontColor + ';background-color:' + ...

Только, суд по наличию иконки, нужно использовать хтмл-батн...
...
Рейтинг: 0 / 0
jquery + json генерация кнопок с условием отображения
    #38042626
ecivgamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iConst, это мои первые шаги и мне непонятно...

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

Код: javascript
1.
$('<li><input type="button" onClick="'+ val.Conditions.JavaScriptAction +'" value="'+ val.Conditions.ButtonText +'"/></li>').appendTo('#ulObj');
...
Рейтинг: 0 / 0
jquery + json генерация кнопок с условием отображения
    #38042627
Фотография iConst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Плохо посмотрел объект - так:
val.Conditions[0]['Colors'].FontColor и т.п.
...
Рейтинг: 0 / 0
jquery + json генерация кнопок с условием отображения
    #38042634
Фотография iConst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ecivgameriConst, это мои первые шаги и мне непонятно...

....- Ну и вперед, изучать и пробовать. Вся необходимая информация уже дана.

ЗЫ: так тоже можно val.Conditions[0].Colors.FontColor
...
Рейтинг: 0 / 0
jquery + json генерация кнопок с условием отображения
    #38043552
ecivgamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем пробовал уже по-разному... сейчас в "ulObj" получается сгенерировать кнопки, однако с именем "undefined" и по клику ничего не происходит. В "ulObj2" не получается вывести кнопки, получаю ошибку "Uncaught TypeError: Cannot read property '0' of undefined". Застрял, подскажите плз...


Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
<html>
<head>
<title>SMButtons</title>
<script src="jquery/jquery-1.4.2.js"></script>
<script type="text/javascript">	        
//When document loaded.
$(document).ready(function(){   
// Get data from file as JSON
            $.getJSON('weekendtask.json', function(data) {
        //var buttons = data.Buttons;
           //$.each(buttons, function(key, val)
           //{	
            //$('<li><input type="button" onClick="'+ val.Conditions[0].JavaScriptAction +'" value="'+ val.Conditions[0].ButtonText +'"/></li>').appendTo('#ulObj');
            //$('<li><input type="button" value="'+ val.Conditions[1].BButtonText.TText +'"/></li>').appendTo('#ulObj');
var res=""
$.each(data.Buttons, function(key, button){
	$.each(button.Conditions,function(key,condition){
	//	console.log(condition)
		res+="<li>"
		res+='<input type="button"' + 
		    //'" value="'+ '"Ttt"' +
		    '" value="'+ condition.ButtonText +
		    //'" value="'+ data.Buttons.Conditions.ButtonText +
			'" onclick="' + condition.JavascriptAction +
			'" style="background-color:'+condition.Colors.BGColor+' color:'+condition.Colors.FontColor+
			'"/>'
		res+="<\/li>test<\/br>"
	})
})
$(res).appendTo('#ulObj')

           //});
   });	    	   
 	 });


 data =  JSON.parse(JSON.stringify('weekendtask.json'));   
 var buttons = data.Buttons[0].Conditions;
 //console.log(buttons);
 $.each(buttons, function(key, val) {    
   $('#ulObj2').append('<li><input type="button" onClick="'+ val.JavaScriptAction +'" value="'+ val.ButtonText +'"/>'+'</li>');
});    
//}); 

window.onload = function(){ alert("welcome"); }

   </script>
</head>
<body bgcolor="silver">
<div>
<ul id='ulObj'>
<li>1</li>
<li>2</li>
</ul>
</div>

<br>

<div>
<ul id='ulObj2'>
<li>1</li>
<li>2</li>
</ul>
</div>
</body>
</html>
...
Рейтинг: 0 / 0
jquery + json генерация кнопок с условием отображения
    #38043565
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это просто ужасно ...
Зачем нам твои комментарии? Зачем в данном случае HTML-код? Зачем использовать строковые включения, напряжные для любого фреймворка, когда есть возможность корректно и понятно включить требуемый код? Куда делись твои закрывающие знаки semicolon?

Плюс-минус твой код можно трансформировать в подобный:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
$(document).ready(function(){
	$.getJSON("weekendtask.json", function(data){
		$.each(data.Buttons, function(_, button){
			$.each(button.Conditions, function(_, condition){
				var but = $("<input/>").attr({type:"button", value:condition.ButtonText}).css({backgroundColor:condition.Colors.BGColor, color:condition.Colors.FontColor});
				but.on("click", {action:condition.JavascriptAction}, function(event){eval(event.data.action);});
				$("#ulObj").append($("<li/>").append(but)).append("test</br>");//можно все свести в одну строку, но для читаемости кода разбил на несколько
			});
		});
	});
});


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

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

Еще пару замечаний:
- проследи за строкой, которую ты "лепишь" - там неправильное соответствие кавычек;
- каждый язык имеет определенный необязательный (или негласный) синтаксис; js имеет ряд правил, которых придерживаются, в том числе написание функций и переменных с маленькой буквы, в том числе внутри json.
А в остальном - настолько данный код далек от приятного, понятноинтуитивного и качественного кода, что даже не находятся слова назвать что еще не так. Кстати, это очень присуще двум группам программеров: на бейсике и на ASP (.NET). Что-то там такое дают, что клиентская часть у них получается сделанной через одно место. Тут, конечно, мои извинения - мнение сугубо личное и субъективное, прошу не принимать близко и не обижаться.
...
Рейтинг: 0 / 0
jquery + json генерация кнопок с условием отображения
    #38043689
ecivgamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruck, спасибо за ответ! Сейчас получаю ошибку "Uncaught SyntaxError: Unexpected token ILLEGAL", не даю дупля где возникает...
...
Рейтинг: 0 / 0
jquery + json генерация кнопок с условием отображения
    #38043854
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А оттрейсить? - Firebug или средства разработчика в Chrome?
...
Рейтинг: 0 / 0
jquery + json генерация кнопок с условием отображения
    #38043885
ecivgamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruck, кароч все получилось. Всем спасибо, простите за тупость.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / jquery + json генерация кнопок с условием отображения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]