Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   При клике менять значение в ячейке таблицы (https://javascript.ru/forum/events/27846-pri-klike-menyat-znachenie-v-yachejjke-tablicy.html)

edmundantes 26.04.2012 21:24

При клике менять значение в ячейке таблицы
 
Перед мной стоит задача... я вывожу массив данных в таблицу. Если длина переменой $a больше 5 символов тогда я обрезаю это значение до 5 (при этом сохраняю старое значение переменой $a в переменую $b). Теперь у меня в таблице выводится в ячейках подстрока переменой. А мне нужно сделать так что бы при клике на эту ячейку уже выводилась переменая $b(где хранится первоначальное значение). Я в JS совсем новичек, так что буду премного благодарен моему спасителю.

cyber 27.04.2012 01:30

т.е если я вас правильно понял вам нужно что б при клике на ячейку выводилось полное значение переменной?
если да,то примерно обьясню алгоритм:
1.к нужной ячейке нужно привязать событие onclick="myFunc(this);"//вызов любой вашей функции
2.вам нужно 2 переменных , сокращенный текст (miniText) и полный (FullText).
3. выводить в таблицу вам нужно miniText , а при клике свойстов display делать none (для miniText),а для FullText ставить inline (по умолчанию у FullText должно стоять none).
Надеюсь обьяснил понятно.

edmundantes 27.04.2012 09:41

Я с JS почти не знаком и сильно в этом не нуждаюсь, но мне нужно реализовать это срочно....
<?php
$a='123';
$b='321';
?>
<html>
<body>
<table>
<tr>
<td>
<div id='item_table' onclick='myFunc(this);'>
<script type="text/javascript">
function myFunc()
var miniText='<?php echo "$a";?>';
var fullText='<?php echo "$b";?>';
this.item_table.miniText.display.inline;
this.item_table.fullText.display.none;
this.events.miniText.display.none;
this.events.fullText.display.inline;
</script>
</div>
</td>
</tr>
</table>
</body>
</html>

Очень прошу вас исправьте меня.

cyber 27.04.2012 14:33

код выше бред!
а сразу сказать что вы пхп используете для заполенния таблицы
1.сначала засуньте 2 div блока в таблицу в один выводите $а во второй $b,
2.присвойте им 2 класса , допустим теже miniText и fullText.
3.занчения блок меняется так elem.style.block="inline";
4.я так понимаю вы и таблицу генирируете в пхп цилке?
если да то значить функция будет привязана к большому количеству ячеек, следует вопрос :
как опредилить как поменят значение block именно для той по которой нажали , так:
this.parentNode.getElementsByClassName(class) // вернет массив

Раед 27.04.2012 16:21

Цитата:

Сообщение от cyber
this.parentNode.getElementsByClassName(class) // вернет массив

Не факт, что вообще что-то вернёт (привет от IE:lol: )

cyber 27.04.2012 17:06

Цитата:

Сообщение от Раед (Сообщение 171589)
Не факт, что вообще что-то вернёт (привет от IE:lol: )

напугал кота сосиской :haha:
if(typeof document.getElementsByClassName != 'function')AllClass=browserIE(class);
else AllClass=document.getElementsByClassName(class);

// ДЛЯ ИЕ вместо document.getElementsByClassName
function browserIE(FindClass){
	var Tagbod=document.getElementsByTagName('body')[0];
	var allSpan=Tagbod.getElementsByTagName('*');
	var arrElements=[];
	for(var i=allSpan.length-1;i>=0;i--){
		
		if(allSpan[i].className==FindClass){
		arrElements.push(allSpan[i]);
		}
		
		}
	return arrElements;
	
	}

а лутчше так
if(typeof document.getElementsByClassName != 'function')alert("Удалите нафиг IE")
else AllClass=document.getElementsByClassName(class);

Раед 27.04.2012 17:14

cyber,
Я знаю, как реализовать getElementByClassName в IE, и ни каких сосисок я вам не предлагал

cyber 27.04.2012 17:15

Цитата:

Сообщение от Раед (Сообщение 171602)
cyber,
Я знаю, как реализовать getElementByClassName в IE, и ни каких сосисок я вам не предлагал

и шуток не воспринимаете:)

Раед 27.04.2012 17:26

Цитата:

Сообщение от cyber
и шуток не воспринимаете

Судя по всему, вы тоже


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