Это очень хорошее обсуждение. У меня был один из тех моментов, когда я хотел или, скажем так, надеялся (удачно, что я мог бы добавить) заново изобрести колесо, будь то квадратное. Любые способы, описанные выше, являются хорошим обсуждением, поэтому любой, кто придет сюда, будет искать, в чем разница между свойством Element и атрибутом. вот моя копейка, и мне пришлось это выяснить на собственном горьком опыте. Я бы сказал, что это будет просто, чтобы не было излишнего технического жаргона.
Предположим, у нас есть переменная, называющая «А». мы привыкли к следующему.
Below will throw an error because simply it put its is kind of object that can only have one property and that is singular left hand side = singular right hand side object. Every thing else is ignored and tossed out in bin.
let A = 'f';
A.b =2;
console.log(A.b);
кто решил, что это должно быть единственное число = единственное число. Люди, которые создают стандарты JavaScript и html, и вот как работают движки.
Давайте изменим пример.
let A = {};
A.b =2;
console.log(A.b);
На этот раз это работает ... потому что мы явно об этом сказали и кто решил, что мы можем сказать это в этом случае, но не в предыдущем случае. Опять люди, которые создают стандарты JavaScript и html.
Я надеюсь, что мы находимся в этом вопросе, давайте еще больше усложним его
let A = {};
A.attribute ={};
A.attribute.b=5;
console.log(A.attribute.b); // will work
console.log(A.b); // will not work
То, что мы сделали, - это дерево видов уровня 1, а затем подуровни неособого объекта. Если вы не знаете, что где, и не называете это так, иначе не будет работать.
Это то, что происходит с HTMLDOM, когда его проанализированное и нарисованное дерево DOm создается для каждого ЭЛЕМЕНТА HTML. Каждый из них имеет уровень свойств. Некоторые из них предопределены, а некоторые нет. Здесь появляются биты ID и VALUE. За сценой они отображаются в соотношении 1: 1 между свойством уровня 1 и свойством уровня солнца, также называемым атрибутами. Таким образом, изменение одного меняет другое. Это было то, что схема вещей получателя и установщика объектов играет роль.
let A = {
attribute :{
id:'',
value:''
},
getAttributes: function (n) {
return this.attribute[n];
},
setAttributes: function (n,nn){
this.attribute[n] = nn;
if(this[n]) this[n] = nn;
},
id:'',
value:''
};
A.id = 5;
console.log(A.id);
console.log(A.getAttributes('id'));
A.setAttributes('id',7)
console.log(A.id);
console.log(A.getAttributes('id'));
A.setAttributes('ids',7)
console.log(A.ids);
console.log(A.getAttributes('ids'));
A.idsss=7;
console.log(A.idsss);
console.log(A.getAttributes('idsss'));
Это то, что показано выше, у ELEMENTS есть еще один набор так называемых атрибутов списка свойств, и у него есть свои собственные основные свойства. между ними есть некоторые предопределенные свойства, которые отображаются как 1: 1, например. Идентификатор является общим для всех, но не имеет значения и src. когда синтаксический анализатор достигает этой точки, он просто открывает словарь о том, что делать, когда присутствуют такие-то и такие-то.
Все элементы имеют свойства и атрибуты, а некоторые элементы между ними являются общими. То, что является общим для одного, не является общим для другого.
В старые времена HTML3 и всего остального мы сначала работали с html, а затем с JS. Сейчас все наоборот, поэтому использование встроенного onlclick стало такой мерзостью. В HTML5 все продвинулось вперед, где есть много списков свойств, доступных в виде коллекции, например. класс, стиль. Раньше цвет был свойством, теперь он перемещен в CSS для обработки и больше не является допустимым атрибутом.
Element.attributes - это список дополнительных свойств, содержащихся в свойстве Element.
Если вы не можете изменить геттер и сеттер свойства Element, что почти очень маловероятно, так как это нарушит всю функциональность, обычно не может быть записано с места в карьер просто потому, что мы определили что-то как A.item не обязательно означает, что Js-движок также будет запускать другой строка функции, чтобы добавить его в Element.attributes.item.
Я надеюсь, что это даст некоторое представление о том, что к чему. Просто ради этого я попробовал Element.prototype.setAttribute с настраиваемой функцией, он просто сломал все вместе, поскольку он перекрыл собственный набор функций, которые функция set attribute играла за сценой.
person
Syed
schedule
14.01.2021
.setAttribute()
на[key] = value
, все начало волшебным образом работать. - person Andrew   schedule 22.10.2019