Здравствуйте, уважаемые коллеги. Суть проблемы такова, в сафари, мозиле, хроме все работает как задумано, однако в IE9 функция onclick срабатывает только один раз. При повторном нажатии на ячейке таблицы ничего не происходит.
Исходники:
<table bordercolorlight="#FFFFFF" width="1000" rules=all border="1" cellspacing="0" cellpadding="0">
<caption>Сведения #1</caption>
<tbody>
<tr bgcolor="#b6dde8">
<th style="width:0px" style="visibility:collapse"><input type="hidden" name="hidden header" value="id"/></th>
<th style="width:350">Наименование</th>
<th style="width:350">Фактический адрес</th>
<th>ИНН/КПП</th>
<th>Среднегодовая численность работников</th>
<th>В т.ч. промышленно-производственный персонал</th>
<th width="16"> </th>
<th width="16"> </th>
</tr>
<tr>
<td width="0" style="visibility:collapse"><input name="id" value="_inserted" type="hidden"></td>
<td onclick="redact(this)"></td>
<td onclick="redact(this)"></td>
<td onclick="redact(this)"></td>
<td onclick="redact(this)"></td>
<td onclick="redact(this)"></td>
<td width="16"><input style="width:auto" title="добавить" type="image" src="images/icons/16x16/add.png" onclick="return addline_table_2(this);" /></td>
<td width="16"><input style="width:auto" title="удалить" type="image" src="images/icons/16x16/remove.png" onclick="return rmline_table_2(this);" /></td>
</tr>
</tbody>
</table>
function redact(element)
{
while (element.tagName!='TD'){
element=element.parentNode;
}
if((element.nodeType==1)&(element.tagName=='TD')){
var cell=element;
innertext=element.innerHTML;// ???????? ????????? ??????
}
var onclickattr =cell.attributes.getNamedItem('onclick');
onclickattr.value='';
cell.innerHTML='<textarea style="overflow: auto; width: 98%; " onblur=closeredact(this)>'+cell.innerHTML+'</textarea>';
var textarea=cell.firstChild;
textarea.focus();
}
function closeredact(element)
{
while (element.tagName!='TD'){
element=element.parentNode;
}
if((element.nodeType==1)&(element.tagName=='TD')){
var cell=element;
}
var onclickattr =cell.attributes.getNamedItem('onclick');
onclickattr.value='redact(this)';
cell.innerHTML=cell.children.item(0).value;
//???? ???????? ????????? ?????? ? ??????
var re=/_changed/;
if(cell.innerHTML!=innertext){
//alert('???????!'+' ????:'+innertext+' ?????:'+cell.innerHTML); ????????
while (element.tagName!='TR'){
element=element.parentNode;
}
if((element.nodeType==1)&(element.tagName=='TR')){
var inputs=element.getElementsByTagName('input');
for (var i=0;i<inputs.length;i++){
if((inputs.item(i).tagName=='INPUT')&(inputs.item(i).getAttribute('name')=='id')&
(inputs.item(0).getAttribute('value')!='_inserted')&(!re.test(inputs.item(0).getAttribute('value')))){
if(inputs.item(0).getAttribute('value')==""){
inputs.item(0).setAttribute('value','_inserted');
}else{
var value=inputs.item(0).getAttribute('value');
inputs.item(0).setAttribute('value',value+'_changed');
}
}
}
}
}
}