Я перебираю элементы из базы данных через PHP, пытаюсь вызвать внешнюю форму для редактирования каждого элемента при нажатии. Я написал Javascript, основанный на платформе Prototype, которая доставляет меня в основном туда. Однако при попытке выбрать родительский элемент выбранного элемента после первого успешного редактирования последующие изменения завершаются неудачно, и содержимое первого отредактированного элемента заменяется последним нажатым элементом.
Другими словами, у меня есть такой список:
A
В
C
После нажатия «A» и изменения его на «1» через мою внешнюю форму, последующего выбора «B» и изменения его на «2» получится следующее:
2
C
Содержимое второго элемента (B или 2) заменяет содержимое первого элемента (a или 1.)
Обратите внимание, что это не проблема с моей внешней формой PHP (при обновлении страницы все мои обновленные значения будут отображаться правильно.) Моя проблема заключается в том, что javascript выбирает правильный родительский элемент, в котором отображаются результаты моего сообщения.
(В качестве интересного примечания, когда я нажимаю и изменяю свои элементы, начиная с нижней части списка, ни один из элементов не перезаписывается, и страница функционирует так, как и должна.)
function inlineEditor() {
$$('div.form span.status').each(function(elm){
elm.observe('click',function(evt){
Event.stop(evt);
var block = this.up('div.form');
var item = block.id;
new Ajax.Updater(block,'status_types_edit.php',{
parameters:{id:item},
evalScripts:true
});
});
});
}
<body onload="inlineEditor();">
<?php do { ?>
<div class="form" id="<?php echo $row_GetStatus_Types['id']; ?>">
<span class="status"><?php echo $row_GetStatus_Types['status_name']; ?></span>
</div>
<?php } while ($row_GetStatus_Types = mysql_fetch_assoc($GetStatus_Types)); ?>