Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.03.2016, 15:05
Профессор
Отправить личное сообщение для Manyasha Посмотреть профиль Найти все сообщения от Manyasha
 
Регистрация: 21.09.2015
Сообщений: 196

При изменении видимости tr слетают параметры ее содержимого
Всем, здравствуйте!

Для строк таблицы меняю видимость (style.display). После чего, все строки съезжают, точнее пропадают выравнивание, отступы и ширина ячейки.

Подскажите, пожалуйста, почему так происходит, и как это можно исправить?

Любые советы принимаются с благодарностью!
<script type="text/javascript" src="http://yandex.st/jquery/1.4.4/jquery.min.js"></script>
<script>
function all_hide(){
	$(document).find("textarea").each(function() {
		this.parentElement.parentElement.style.display="none";
	})
}
function all_show(){
	$(document).find("textarea").each(function() {
		this.parentElement.parentElement.style.display="block";
	})
}
</script>
<table border = "1"  cellpadding="5" width="100%">
	<tr>
		<td width="10%">строка 1</td>
		<td width="90%" align="center"><textarea name="r1" rows="1" cols="80" id="r1"></textarea></td>
	</tr>
	<tr>
		<td width="10%">а тут строка 2</td>
		<td width="90%" align="center"><textarea name="r2" rows="1" cols="80" id="r2"></textarea></td>
	</tr>
	<tr>
		<td width="10%">и еще вот строка 3</td>
		<td width="90%" align="center"><textarea name="r3" rows="1" cols="80" id="r3"></textarea></td>
	</tr>
</table>
<input type = "button" onclick = "all_show();" value = "Показать">
<input type = "button" onclick = "all_hide();" value = "скрыть">
Ответить с цитированием
  #2 (permalink)  
Старый 10.03.2016, 17:39
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

Manyasha,
Цитата:
Подскажите, пожалуйста, почему так происходит
this это textarea, this.parentElement это td, this.parentElement.parentElement это tr.
Цитата:
и как это можно исправить?
<script type="text/javascript" src="http://yandex.st/jquery/1.4.4/jquery.min.js"></script>
    <script>
function all_hide(){
    $(document).find("table").hide();
}
function all_show(){
    $(document).find("table").show();
}
    </script>
    <table border="1" cellpadding="5" width="100%">
        <tr>
            <td width="10%">строка 1</td>
            <td width="90%" align="center"><textarea name="r1" rows="1" cols="80" id="r1"></textarea></td>
        </tr>
        <tr>
            <td width="10%">а тут строка 2</td>
            <td width="90%" align="center"><textarea name="r2" rows="1" cols="80" id="r2"></textarea></td>
        </tr>
        <tr>
            <td width="10%">и еще вот строка 3</td>
            <td width="90%" align="center"><textarea name="r3" rows="1" cols="80" id="r3"></textarea></td>
        </tr>
    </table>
    <input type="button" onclick="all_show();" value="Показать">
    <input type="button" onclick="all_hide();" value="скрыть">

Последний раз редактировалось destus, 10.03.2016 в 17:46.
Ответить с цитированием
  #3 (permalink)  
Старый 10.03.2016, 18:28
Профессор
Отправить личное сообщение для Manyasha Посмотреть профиль Найти все сообщения от Manyasha
 
Регистрация: 21.09.2015
Сообщений: 196

destus,
Цитата:
this.parentElement.parentElement это tr
Так я и хочу скрыть/показать строки.
Извините, что привела некорректный пример!
В некоторых случаях требуется скрыть не все строки, а только те, для которых выполняется какое-то условие. Похожий код применяется в нескольких местах скрипта, везде разные условия, поэтому скрывать всю таблицу мне нельзя.

вот пример скрытия строк с условием (если нет текста - скрываем)
<script type="text/javascript" src="http://yandex.st/jquery/1.4.4/jquery.min.js"></script>
<script>
function all_hide(){
	$(document).find("textarea").each(function() {
		if (!this.value){this.parentElement.parentElement.style.display="none";}
	})
}
function all_show(){
	$(document).find("textarea").each(function() {
		if (!this.value){this.parentElement.parentElement.style.display="block";}
	})
}
</script>
<table border = "1"  cellpadding="5" width="100%">
	<tr>
		<td width="10%">строка 1</td>
		<td width="90%" align="center"><textarea name="r1" rows="1" cols="80" id="r1"></textarea></td>
	</tr>
	<tr>
		<td width="10%">а тут строка 2</td>
		<td width="90%" align="center"><textarea name="r2" rows="1" cols="80" id="r2"></textarea></td>
	</tr>
	<tr>
		<td width="10%">и еще вот строка 3</td>
		<td width="90%" align="center"><textarea name="r3" rows="1" cols="80" id="r3"></textarea></td>
	</tr>
</table>
<input type = "button" onclick = "all_show();" value = "Показать">
<input type = "button" onclick = "all_hide();" value = "скрыть">


destus,
Вы мне подали идею использовать hide()/show()!
Написала вместо
this.parentElement.parentElement.style.display="none";

так
$(this.parentElement.parentElement).hide();

Все получилось, спасибо Вам огромное!
Ответить с цитированием
  #4 (permalink)  
Старый 10.03.2016, 18:39
Аватар для Cuntmann
Аспирант
Отправить личное сообщение для Cuntmann Посмотреть профиль Найти все сообщения от Cuntmann
 
Регистрация: 26.01.2014
Сообщений: 78

Для <tr> не 'block', а 'table-row' в display прописывается, не?
Ответить с цитированием
  #5 (permalink)  
Старый 10.03.2016, 18:46
Профессор
Отправить личное сообщение для Manyasha Посмотреть профиль Найти все сообщения от Manyasha
 
Регистрация: 21.09.2015
Сообщений: 196

Cuntmann,
При show/hide я знала, но забыла (девичья память - она такая),
а вот про 'table-row' впервые слышу!
Работает просто замечательно!
Спасибо Вам за помощь и за новую информацию!
Ответить с цитированием
  #6 (permalink)  
Старый 10.03.2016, 19:43
Аватар для Cuntmann
Аспирант
Отправить личное сообщение для Cuntmann Посмотреть профиль Найти все сообщения от Cuntmann
 
Регистрация: 26.01.2014
Сообщений: 78

Manyasha,
рад стараться, мэм )) вот вам ссылочка на хороший ресурс
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Анимация числа, при изменении ширина HTML элемента akkord87 Общие вопросы Javascript 10 15.12.2015 15:43
События при изменении содержимого input sean88 jQuery 2 17.09.2014 16:42
RowEditing и combobox - при изменении отображается "dataindex" Lexxx_HU ExtJS 3 24.07.2014 15:01
не вызывается функция при изменении option soft4you Общие вопросы Javascript 1 23.07.2014 17:41
выполнение ф-ии при изменении состояния radio MaxB Events/DOM/Window 5 24.06.2009 14:24