You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
971 B
JavaScript
44 lines
971 B
JavaScript
5 years ago
|
"use strict";
|
||
|
|
||
|
function findIdRoot(element) {
|
||
|
let current = element;
|
||
|
|
||
|
while (current != null) {
|
||
|
if (current.id != null && current.id !== "") {
|
||
|
return current;
|
||
|
} else {
|
||
|
current = current.parentElement;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
module.exports = function generateSelector(element) {
|
||
|
/* FIXME: check that element != null */
|
||
|
let root = findIdRoot(element);
|
||
|
|
||
|
let segments = [
|
||
|
(root != null) ? `#${root.id}` : null,
|
||
|
(element.classList.length > 0)
|
||
|
? Array.from(element.classList).map((className) => `.${className}`).join("")
|
||
|
: element.tagName.toLowerCase()
|
||
|
].filter((segment) => segment != null);
|
||
|
|
||
|
return segments.join(" ");
|
||
|
|
||
|
// console.log(root);
|
||
|
|
||
|
// let className = element.classList.item(0);
|
||
|
|
||
|
// if (root === element) {
|
||
|
// return `#${root.id}`;
|
||
|
// } else if (root != null) {
|
||
|
// if (className != null) {
|
||
|
// return `#${root.id} .${className}`;
|
||
|
// } else {
|
||
|
// return `#${root.id} ${element.tagName}`;
|
||
|
// }
|
||
|
// } else {
|
||
|
// return `stuff`;
|
||
|
// }
|
||
|
};
|