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, время: 22:13. |