Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.04.2011, 04:46
Аватар для simple
Профессор
Отправить личное сообщение для simple Посмотреть профиль Найти все сообщения от simple
 
Регистрация: 23.09.2010
Сообщений: 247

Передача массива из PHP Ajxom
Люди помогите! Передаю многомерный массив из PHP с помощью json_encode(), в js делаю eval("("+http_request.responseText+")"), получаю стоку [object Objec],[object Objec],[object Objec]ю
Как мне добраться до элементов объекта то?
Ответить с цитированием
  #2 (permalink)  
Старый 07.04.2011, 06:25
Аватар для poorking
prodigy
Отправить личное сообщение для poorking Посмотреть профиль Найти все сообщения от poorking
 
Регистрация: 01.11.2010
Сообщений: 503

это не строка а массив объектов, вы же должны знать структуру массива, так и добирайтесь, попробуйте в FF .toSource() его чтобы увидеть что внутри
__________________
readOnly
Ответить с цитированием
  #3 (permalink)  
Старый 07.04.2011, 20:07
Аватар для simple
Профессор
Отправить личное сообщение для simple Посмотреть профиль Найти все сообщения от simple
 
Регистрация: 23.09.2010
Сообщений: 247

Да с этим разобрался, спасибо. Вот еще вопрос, теперь к этим объектам можно только непосредственно обращаться по названию полей? например у меня получились объекты t[0].user,t[0].count,t[1].user,t[1].count и.т.д.
Нельзя использовать как в масивах запись что ли к объектам типо t[0][1], чтобы можно было работать в циклах с ними? или есть альтернатива какая то этому?
Ответить с цитированием
  #4 (permalink)  
Старый 07.04.2011, 22:00
Аватар для poorking
prodigy
Отправить личное сообщение для poorking Посмотреть профиль Найти все сообщения от poorking
 
Регистрация: 01.11.2010
Сообщений: 503

Можно перебрать и ассоциативный массив. Смотрите цикл for ... in
__________________
readOnly
Ответить с цитированием
  #5 (permalink)  
Старый 08.04.2011, 22:07
Аватар для simple
Профессор
Отправить личное сообщение для simple Посмотреть профиль Найти все сообщения от simple
 
Регистрация: 23.09.2010
Сообщений: 247

Есть HTML таблица из 10 строк и 3 столбцов, нужно скриптом JS заполнить ее данными приходящими из PHP скрипта Ajaxom. Создавать таблицы средствами JS я с горем пополам научился, а вот уже имеющию таблицу заполнить данными и иметь доступ к этим данным из скрипта что то не соображу ни как, или я просто торможу. Подскажите кто знает как это реализовать. Мне тупо нужно заполнить таблицу данными приходящие от сервера в JSON формате.
Ответить с цитированием
  #6 (permalink)  
Старый 08.04.2011, 22:23
Аватар для poorking
prodigy
Отправить личное сообщение для poorking Посмотреть профиль Найти все сообщения от poorking
 
Регистрация: 01.11.2010
Сообщений: 503

пусть есть таблица с id = "tbl"

var table = document.getElementById("tbl");
	
	for(var r = 0, rl = table.rows.length; r < rl; r ++){
		for(var c = 0, cl = table.rows[r].cells.length; c < cl; c ++){
			table.rows[r].cells[c].innerHTML = "данные"
		}
	}


так вы по очереди переберете все ячейки
__________________
readOnly

Последний раз редактировалось poorking, 08.04.2011 в 22:28.
Ответить с цитированием
  #7 (permalink)  
Старый 08.04.2011, 22:34
Аватар для simple
Профессор
Отправить личное сообщение для simple Посмотреть профиль Найти все сообщения от simple
 
Регистрация: 23.09.2010
Сообщений: 247

Спасибо большое, выручил. Я догадывался что это не сложно =)
Ответить с цитированием
  #8 (permalink)  
Старый 09.04.2011, 06:39
Аватар для simple
Профессор
Отправить личное сообщение для simple Посмотреть профиль Найти все сообщения от simple
 
Регистрация: 23.09.2010
Сообщений: 247

Вообщем есть скрипт который меняет цвет строки таблицы при нажатие на нее:
function onClickTR (tr)
{
  if (selTR)
  {
    selTR.style.backgroundColor = selTR.prevBackgroundColor;
  }
 
  selTR = tr;
  selTR.prevBackgroundColor = selTR.style.backgroundColor;
  selTR.style.backgroundColor ='#828282';
}

Как сделать так чтобы данный скрипт срабатывал только на тех строках таблицы в чьих ячейках есть данные. т.е например есть таблица из 10 строк, 5 строк у нее пустые, при нажатие на них не должно ничего выполняться. Заранее спасибо.
Ответить с цитированием
  #9 (permalink)  
Старый 09.04.2011, 07:16
Аватар для poorking
prodigy
Отправить личное сообщение для poorking Посмотреть профиль Найти все сообщения от poorking
 
Регистрация: 01.11.2010
Сообщений: 503

что значит пустая строка? то есть во всех ячейках строки ничего нет?
я б вообще вот так сделал
//ПРосто создаю таблицу (у тебя готовая вроде есть)
	var table = document.createElement("TABLE");
	
	for(var r = 0; r < 10; r ++){
		table.appendChild(
			function(){
				var tr = document.createElement("TR");
				for(var c = 0; c < 20; c ++){
					tr.appendChild(
						function(){
							var td = document.createElement("TD");
							td.style.padding = "10px";
							td.style.border = "1px solid #def";
							return td;
						}()
					);
				}
				return tr;
			}()
		);
	}
	
	//заполняю пару строчек (у тебя все есть уже)
	var nums = [3,6,9];
	for(var i = 0; i < nums.length; i ++){
		for(var c = 0, cl = table.rows[nums[i]].cells.length; c < cl; c ++){
			if(Math.random() > Math.random()) table.rows[nums[i]].cells[c].innerHTML =  c;
		}
	}
	
	
	document.body.appendChild(table);
	
	
	//и вот такой обработчик
	table.onclick = function(e){
		//определяем по ячейке какой строки кликнули
		var tr = function(event){
			return event.target || event.srcElement;
		}(e || window.event).parentNode;
		
		//если вдруг оказалось что кликнули не по ячейке а между ячейками в borderSpacing то выходим
		if(tr.tagName != "TR"){
			return false;
		}
		
		//проверяем все ячейки на наличие внутренностей
		//если ни в одной ячейке ничего нет в строке, то значит она пустая
		
		var matches = 0;
		for(var c = 0, cl = tr.cells.length; c < cl; c ++){
			//считаем пустые ячейки
			if(!tr.cells[c].innerHTML) {
				matches ++;
			}
		}
		//если все яячейки не были пустыми
		if(!(matches == tr.cells.length)){
			//красим
			tr.style.backgroundColor = "red";
		}
		return false;
		
	}
__________________
readOnly
Ответить с цитированием
  #10 (permalink)  
Старый 09.04.2011, 16:20
Аватар для simple
Профессор
Отправить личное сообщение для simple Посмотреть профиль Найти все сообщения от simple
 
Регистрация: 23.09.2010
Сообщений: 247

Сообщение от poorking
что значит пустая строка? то есть во всех ячейках строки ничего нет?
Да,строка или полная или пустая, отдельно пустых или заполненных ячеек в ней не должно быть, значит достаточно проверить по одной ячейки в строке, вот я как сделал, просто добавил еще один IF:
var selTR=null;
function onClickTR (tr)
{
  if(!tr.cells[1].innerText)// Проверка на пустоту ячейки
  {
   exit;
  }
   if (selTR)
   {
    selTR.style.backgroundColor = selTR.prevBackgroundColor;
   }
 selTR = tr;
 selTR.prevBackgroundColor = selTR.style.backgroundColor;
 selTR.style.backgroundColor ='#FFE4C4';
}

Работает.

Последний раз редактировалось simple, 09.04.2011 в 16:23.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача массива из Php в Javascript kamushek Серверные языки и технологии 45 20.02.2012 11:11
Передача POST запросом массива из PHP alex_zp jQuery 6 16.11.2010 08:16
передача переменной из jQuery в PHP UpJump jQuery 3 03.11.2010 12:14
передача массива из PHP в javascript simple Общие вопросы Javascript 3 03.10.2010 12:19
есть ли стандартная функция вывода сожержимого массива что то вроди print_r в PHP??? mazovski Events/DOM/Window 4 20.08.2009 12:52