-
Notifications
You must be signed in to change notification settings - Fork 0
/
attr.js
72 lines (65 loc) · 1.58 KB
/
attr.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import { isHTML, validHTML } from "./include.js"
const $ = document.createAttribute.bind(document)
/**
* @param {string} name
* @param {string} value
* @return {Attr}
*/
export function attr(name, value) {
const _ = $(name || "_")
_.value = value || ""
return _
}
/**
* @param {HTMLElement} element
* @param {string} attrName
*/
attr.remove = function (element, attrName) {
validHTML(element)
if (attrName instanceof Attr) {
element.removeAttributeNode(attrName)
} else {
element.removeAttribute(attrName)
}
return element
}
/**
* @param {HTMLElement} element
* @param {string} attrName
* @param {string} attrValue
*/
attr.add = attr.set = function (element, attrName, attrValue) {
validHTML(element)
if (attrName instanceof Attr) {
element.setAttributeNode(attrName)
} else {
if (typeof attrName !== "string") {
throw new TypeError("Second argument is not type a Attr or String")
}
if (typeof attrValue !== "string") attrValue = ""
element.setAttribute(attrName, attrValue)
}
return element
}
/**
* @param {HTMLElement} element
* @param {string} attrName
* @param {boolean} [force]
*/
attr.toggle = function (element, attrName, force) {
return validHTML(element).toggleAttribute(attrName, force || undefined)
}
/**
* @param {HTMLElement} element
* @param {string} attrName
*/
attr.get = function (element, attrName) {
return validHTML(element).getAttribute(attrName)
}
/**
* @param {HTMLElement} element
* @param {string} attrName
*/
attr.has = function (element, attrName) {
return validHTML(element).hasAttribute(attrName)
}