Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Анализ ситуации на странице
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » Анализ ситуации на странице

Страниц (1): [1]
 

1. Yuriy - 29 Июня, 2007 - 21:36:58 - перейти к сообщению

(Извините за корявое название темы)


На странице имеется N записей. Каждая имеет свой id. Я могу любую из них удалить не только со страницы, но она также удаляется из текстового файла. id=номер строки в файле. Представьте себе ситуацию. На странице:

Запись 1.
Запись 2.
Запись 3.
Запись 4.
..............
Запись N.

Работаю с AJAX.

Удаляю 3 запись. Получилось

Запись 1.
Запись 2.
Запись 4.
..............
Запись N.

Соответственно, в файле запись 4 стала 3, а id записи 4 на странице ведь 4! Следовательно, нажму удалить запись 4, она со страницы уйдёт, а в файле ничего не изменится, так как их всего 3 останется.

Вопрос: что посоветуете здесь сделать? Может уменьшить id записей ниже удалённой на 1? Однозначно, ответ на мой вопрос давно придуман другим разработчиком... Но я не знаю, как поступить максимально удобно и компактно.

Заранее спасибо.
2. valenok - 30 Июня, 2007 - 10:24:46 - перейти к сообщению
можно перенумеровать, а можно в файле строку не удалять, а заменять на пустую.

PHP:
скопировать код в буфер обмена
  1.  
  2. <span id='span1' onclick = "JavaScript:del(this.id)" onmouseover="Javascript:window.status=this.id;"> 123 </span><br>
  3. <span id='span2' onclick = "JavaScript:del(this.id)" onmouseover="Javascript:window.status=this.id;"> 123 </span><br>
  4. <span id='span3' onclick = "JavaScript:del(this.id)" onmouseover="Javascript:window.status=this.id;"> 123 </span><br>
  5. <span id='span4' onclick = "JavaScript:del(this.id)" onmouseover="Javascript:window.status=this.id;"> 123 </span><br>
  6.  
  7. < script>
  8. function del(id) {
  9.         var N = 4; // Колво элементов
  10.         N++;
  11.         id = id.substr(4);
  12.         var sp = document.getElementById('span'+id);
  13.         if(sp){
  14.                    var Parent = sp.parentNode;
  15.                    Parent.removeChild(sp);
  16.         }
  17.                
  18.         for(++id; id<N; id++)
  19.                 if(document.getElementById('span'+id)) document.getElementById('span'+id).setAttribute("id","span"+(id-1));
  20.        
  21. }
  22. </script>
  23.  
3. Yuriy - 30 Июня, 2007 - 12:22:44 - перейти к сообщению
Саша, в точку! Огромное спасибо! И ещё, если можешь, объясни, что ты здесь делал. Точнее, что делается в функции del вот тут:

PHP:
скопировать код в буфер обмена
  1.  
  2.     var Parent = sp.parentNode;
  3.     Parent.removeChild(sp);
  4.  
4. Yuriy - 30 Июня, 2007 - 15:04:19 - перейти к сообщению
И ещё вопрос с id возник.

Есть несколько дивов. Внутри каждого есть картинка. Как узнать id дива, кликнув по картинке? Пример:

<div id="div_1"><img src="image.gif" onClick="alert(???);"></div>
5. evgenijj - 30 Июня, 2007 - 18:37:26 - перейти к сообщению
Цитата:

Есть несколько дивов. Внутри каждого есть картинка. Как узнать id дива, кликнув по картинке?

PHP:
скопировать код в буфер обмена
  1.  
  2. <div id="myDiv"><img src="image.gif" onClick="alert(parentNode.id);"></div>
  3.  
6. valenok - 30 Июня, 2007 - 18:58:40 - перейти к сообщению
yandex.ru -> Введение в DOM
--
var Parent = sp.parentNode; // находим родительский элемент, в наешм случае body
Parent.removeChild(sp); //из родительского элемента убираем этот
7. Yuriy - 30 Июня, 2007 - 19:06:45 - перейти к сообщению
evgenijj, valenok, спасибо вам за ответы! Я так и думал, что это кусок кода, непонятый мною, и есть ответ на последний вопрос.


(Добавление)
evgenijj, забыл, что это не всё... У меня ситуация чуть посложнее:

PHP:
скопировать код в буфер обмена
  1.  
  2. <div id="div_1">
  3.    <table border='1'>
  4.       <tr>
  5.          <td>
  6.             <input type='button' value='ok' onClick="alert(parentNode.id);">
  7.          </td>
  8.       </tr>
  9.    </table>
  10. </div>  
  11.  


Как здесь получить "div_1"? Ведь здесь родителем кнопки не див будет Недовольство, огорчение
8. evgenijj - 01 Июля, 2007 - 09:31:33 - перейти к сообщению
onClick="alert(parentNode.parentNode.parentNode.parentNode.getAttribute('id'));"
9. Yuriy - 01 Июля, 2007 - 10:54:41 - перейти к сообщению
evgenijj, спасибо! Как всё просто оказалось... А не является ли использование таких вот скриптов плохим тоном?
10. valenok - 01 Июля, 2007 - 13:48:10 - перейти к сообщению
а что вы называете плохим тоном?
11. Yuriy - 01 Июля, 2007 - 13:54:22 - перейти к сообщению
Некрасивый сценарий.
12. valenok - 01 Июля, 2007 - 14:06:30 - перейти к сообщению
вам нравится сценарий Евгения?
Мне нравится.
13. Yuriy - 01 Июля, 2007 - 15:32:00 - перейти к сообщению
Очень даже ;)

 

Powered by ExBB FM 1.0 RC1