- A canceled order.
+
+ Un pedido cancelado
```
-Why would using an attribute be preferable to having classes like `.order-state-new`, `.order-state-pending`, `order-state-canceled`?
+¿Por qué sería preferible usar un atributo a tener clases como `.order-state-new`, `.order-state-pending`, `order-state-canceled`?
-Because an attribute is more convenient to manage. The state can be changed as easy as:
+Porque un atributo es más conveniente de administrar. El estado se puede cambiar tan fácil como:
```js
-// a bit simpler than removing old/adding a new class
+// un poco más simple que eliminar antiguos / agregar una nueva clase
div.setAttribute('order-state', 'canceled');
```
-But there may be a possible problem with custom attributes. What if we use a non-standard attribute for our purposes and later the standard introduces it and makes it do something? The HTML language is alive, it grows, and more attributes appear to suit the needs of developers. There may be unexpected effects in such case.
+Pero puede haber un posible problema con los atributos personalizados. ¿Qué sucede si usamos un atributo no estándar para nuestros propósitos y luego el estándar lo introduce y hace que haga algo? El lenguaje HTML está vivo, crece y cada vez hay más atributos que aparecen para satisfacer las necesidades de los desarrolladores. Puede haber efectos inesperados en tal caso.
-To avoid conflicts, there exist [data-*](https://html.spec.whatwg.org/#embedding-custom-non-visible-data-with-the-data-*-attributes) attributes.
+Para evitar conflictos, existen atributos [data-*](https://html.spec.whatwg.org/#embedding-custom-non-visible-data-with-the-data-*-attributes).
-**All attributes starting with "data-" are reserved for programmers' use. They are available in the `dataset` property.**
+**Todos los atributos que comienzan con "data-" están reservados para el uso de los programadores. Están disponibles en la propiedad `dataset`.**
-For instance, if an `elem` has an attribute named `"data-about"`, it's available as `elem.dataset.about`.
+Por ejemplo, si un `elem` tiene un atributo llamado `"data-about"`, está disponible como `elem.dataset.about`.
-Like this:
+Como esto:
```html run
-
+
```
-Multiword attributes like `data-order-state` become camel-cased: `dataset.orderState`.
+Los atributos de varias palabras como `data-order-state` se convierten en camel-case: `dataset.orderState`
-Here's a rewritten "order state" example:
+Aquí hay un ejemplo reescrito de "estado del pedido":
```html run
-
- A new order.
+
+ Una nueva orden.
```
-Using `data-*` attributes is a valid, safe way to pass custom data.
+El uso de los atributos `data- *` es una forma válida y segura de pasar datos personalizados.
-Please note that we can not only read, but also modify data-attributes. Then CSS updates the view accordingly: in the example above the last line `(*)` changes the color to blue.
+Tenga en cuenta que no solo podemos leer, sino también modificar los atributos de datos. Luego, CSS actualiza la vista en consecuencia: en el ejemplo anterior, la última línea `(*)` cambia el color a azul.
-## Summary
+## Resumen
-- Attributes -- is what's written in HTML.
-- Properties -- is what's in DOM objects.
+- Atributos: es lo que está escrito en HTML.
+- Propiedades: es lo que hay en los objetos DOM.
-A small comparison:
+Una pequeña comparación:
-| | Properties | Attributes |
+| | Propiedades | Atributos |
|------------|------------|------------|
-|Type|Any value, standard properties have types described in the spec|A string|
-|Name|Name is case-sensitive|Name is not case-sensitive|
+|Tipo|Cualquier valor, las propiedades estándar tienen tipos descritos en la especificación|Un string|
+|Nombre|El nombre distingue entre mayúsculas y minúsculas|El nombre no distingue entre mayúsculas y minúsculas|
-Methods to work with attributes are:
+Los métodos para trabajar con atributos son:
-- `elem.hasAttribute(name)` -- to check for existence.
-- `elem.getAttribute(name)` -- to get the value.
-- `elem.setAttribute(name, value)` -- to set the value.
-- `elem.removeAttribute(name)` -- to remove the attribute.
-- `elem.attributes` is a collection of all attributes.
+- `elem.hasAttribute(nombre)` -- para comprobar si existe.
+- `elem.getAttribute(nombre)` -- para obtener el valor.
+- `elem.setAttribute(nombre, valor)` -- para dar un valor.
+- `elem.removeAttribute(nombre)` -- para eliminar el atributo.
+- `elem.attributes` es una colección de todos los atributos.
-For most situations using DOM properties is preferable. We should refer to attributes only when DOM properties do not suit us, when we need exactly attributes, for instance:
+Para la mayoría de las situaciones, es preferible usar las propiedades DOM. Deberíamos referirnos a los atributos solo cuando las propiedades DOM no nos convienen, cuando necesitamos exactamente atributos, por ejemplo:
-- We need a non-standard attribute. But if it starts with `data-`, then we should use `dataset`.
-- We want to read the value "as written" in HTML. The value of the DOM property may be different, for instance the `href` property is always a full URL, and we may want to get the "original" value.
+- Necesitamos un atributo no estándar. Pero si comienza con `data-`, entonces deberíamos usar `dataset`.
+- Queremos leer el valor "como está escrito" en HTML. El valor de la propiedad DOM puede ser diferente, por ejemplo, la propiedad `href` siempre es una URL completa, y es posible que queramos obtener el valor "original ".