getAttribute IE8 как это работает?
Странная фигня творится.
function rmline(element){ while (element.tagName!='TR'){ element=element.parentNode; } if((element.nodeType==1)&(element.tagName=='TR')){ //Создаем hidden input элемент за <table> var id=element.children[0].cloneNode(true); var value_str=id.getAttribute('value'); id.setAttribute('value',value_str+'_deleted'); var table=element.parentNode; element.parentNode.removeChild(element); while (table.tagName!='TABLE'){ table=table.parentNode; } table.appendChild(id); В частности id.getAttribute('value') в firefox все ок. В IE - null. Причем я вообще запутался, потому что в этом же js файле я эту функцию использовал 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')))){ var value=inputs.item(0).getAttribute('value'); inputs.item(0).setAttribute('value',value+'_changed'); } } } Здесь отрабатывает.... |
Вы уверены, что берёте атрибут именно у того элемента, у которого надо взять? childNodes вещь ненадёжная.
|
var id=element.children[0].cloneNode(true); в отладчике IE id = нужный элемент INPUT. Да SetAttribute тоже перестал работать... странно...
|
могу предположить, что set и get Attribute не работают с клоном... - Не обращать на эту запись внимание, работают.
|
var test=element.children[0].getAttribute('value');
element.children[0].setAttribute('value','123'); Это тоже не работает. test=null, Однако element.children[0] в IE отладчике показывает в свойстве innerHTML = "<INPUT value=2 type=hidden name=id> ". Странно... что это за тег такой, в котором находится тег INPUT...И почему Firefox его не видит... |
Ну да точно...element.children[0].children[0] и есть INPUT... не понимаю ничего...
В IE хорошо, firefox теперь не понимает... В общем придется перемещаться вниз по дереву пока nodeName!="INPUT", тогда и в FF и в IE будет работать... а вообще .."будь проклят тот день, когда я сел за клавиатуру этого пылесоса"... |
Цитата:
var input = element.getElementsByTagName('INPUT')[0]; |
Kolyaj,спасибо Вам большое.
Вот так работает и в FF и в IE. function rmline(element){ while (element.tagName!='TR'){ element=element.parentNode; } if((element.nodeType==1)&(element.tagName=='TR')){ var input = element.getElementsByTagName('INPUT')[0]; var value_str=input.getAttribute('value'); input.setAttribute('value',value_str+'_deleted'); var table=element.parentNode; element.parentNode.removeChild(element); if (value_str=='_inserted'){ return; } while (table.tagName!='TABLE'){ table=table.parentNode; } table.appendChild(input); } } |
Часовой пояс GMT +3, время: 07:00. |