/** * @return {(HTMLDivElement|HTMLInputElement|HTMLFormElement|HTMLVideoElement|HTMLCanvasElement|HTMLImageElement)} */ function qs(selector, parent = null) { if (parent) { return parent.querySelector(selector); } return document.querySelector(selector); } /** * @return {Array<(HTMLDivElement|HTMLInputElement|HTMLFormElement|HTMLVideoElement|HTMLCanvasElement|HTMLImageElement)>} */ function qsa(selector, parent = null) { if (parent) { return parent.querySelectorAll(selector); } return document.querySelectorAll(selector); } /** * * @param {Number} n * @returns {String} */ Number.prototype.zero = function (n) { let str = "0".repeat(n) + this; return str.slice(-n); }; /** * * @returns {String} */ Date.prototype.yyyymmddhyphen = function () { return this.getFullYear() + "-" + (this.getMonth() + 1).zero(2) + "-" + this.getDate().zero(2); }; /** * * @param {HTMLDivElement} parent * @param {String} classname * @param {CSSStyleDeclaration} style * @returns {HTMLDivElement} */ function Div(parent, classname = "", text = "", style = {}) { let elm = document.createElement("div"); if (parent) { parent.appendChild(elm); } elm.className = classname; elm.innerText = text; Object.keys(style).forEach((key) => { const value = style[key]; elm.style[key] = value; }); return elm; } /** * * @param {HTMLDivElement} parent * @param {String} classname * @param {CSSStyleDeclaration} style * @returns {HTMLSpanElement} */ function Span(parent, classname = "", text = "", style = {}) { let elm = document.createElement("span"); if (parent) { parent.appendChild(elm); } elm.className = classname; elm.innerText = text; Object.keys(style).forEach((key) => { const value = style[key]; elm.style[key] = value; }); return elm; } /** * * @param {HTMLDivElement} parent * @param {String} classname * @returns {HTMLCanvasElement} */ function Canvas(parent, classname = "") { let elm = document.createElement("canvas"); if (parent) { parent.appendChild(elm); } elm.className = classname; return elm; } /** * * @param {HTMLDivElement} parent * @param {String} classname * @returns {HTMLAnchorElement} */ function A(parent, classname = "", href = "") { let elm = document.createElement("a"); if (parent) { parent.appendChild(elm); } elm.className = classname; elm.href = href; return elm; } /** * * @param {HTMLDivElement} parent * @param {String} classname * @param {HTMLButtonElement} setting * @param {CSSStyleDeclaration} style * @returns {HTMLButtonElement} */ function Button(parent, classname = "", text = "", setting = {}, style = {}) { let elm = document.createElement("button"); if (parent) { parent.appendChild(elm); } elm.className = classname; elm.innerText = text; Object.keys(setting).forEach((key) => { const value = setting[key]; elm[key] = value; }); Object.keys(style).forEach((key) => { const value = style[key]; elm.style[key] = value; }); return elm; } /** * * @param {HTMLDivElement} parent * @param {String} classname * @param {CSSStyleDeclaration} style * @returns {HTMLTableElement} */ function Table(parent, classname = "", style = {}) { let elm = document.createElement("table"); if (parent) { parent.appendChild(elm); } elm.className = classname; Object.keys(style).forEach((key) => { const value = style[key]; elm.style[key] = value; }); return elm; } /** * * @param {HTMLDivElement} parent * @param {String} classname * @param {CSSStyleDeclaration} style * @returns {HTMLTableRowElement} */ function Tr(parent, classname = "", style = {}) { let elm = document.createElement("tr"); if (parent) { parent.appendChild(elm); } elm.className = classname; Object.keys(style).forEach((key) => { const value = style[key]; elm.style[key] = value; }); return elm; } /** * * @param {HTMLDivElement} parent * @param {String} classname * @param {CSSStyleDeclaration} style * @returns {HTMLTableCellElement} */ function Td(parent, classname = "", text = "", style = {}) { let elm = document.createElement("td"); if (parent) { parent.appendChild(elm); } elm.className = classname; elm.innerText = text; Object.keys(style).forEach((key) => { const value = style[key]; elm.style[key] = value; }); return elm; } /** * * @param {HTMLDivElement} parent * @param {String} classname * @returns {HTMLInputElement} */ function Input(parent, classname = "") { let elm = document.createElement("input"); if (parent) { parent.appendChild(elm); } elm.className = classname; return elm; } /** * * @param {HTMLDivElement} parent * @param {String} classname * @returns {HTMLSelectElement} */ function Select(parent, classname = "", options = [], defaultoption = "") { let elm = document.createElement("select"); if (parent) { parent.appendChild(elm); } elm.className = classname; options.forEach((option) => { elm.appendChild(new Option(option, option, option == defaultoption, option == defaultoption)); }); return elm; } /** * * @param {HTMLDivElement} parent * @param {String} classname * @returns {HTMLVideoElement} */ function Video(parent, classname = "") { let elm = document.createElement("video"); if (parent) { parent.appendChild(elm); } elm.className = classname; return elm; } /** * * @param {HTMLDivElement} parent * @param {String} classname * @returns {HTMLTextAreaElement} */ function Textarea(parent, classname = "") { let elm = document.createElement("textarea"); if (parent) { parent.appendChild(elm); } elm.className = classname; return elm; } /** * * @param {HTMLDivElement} parent * @param {String} classname * @returns {HTMLInputElement} */ function Inputdate(parent, classname = "") { let elm = document.createElement("input"); if (parent) { parent.appendChild(elm); } elm.type = "date"; elm.className = classname; return elm; } /** * * @param {HTMLDivElement} parent * @param {String} classname * @param {Date} date * @param {HTMLInputElement} setting * @returns {HTMLInputElement} */ function Inputdatetime(parent, classname = "", date, setting = {}) { let elm = document.createElement("input"); if (parent) { parent.appendChild(elm); } elm.type = "datetime-local"; elm.className = classname; if (date) { let ms = date.getTime() + 9 * 60 * 60 * 1000; ms -= ms % 1000; elm.valueAsNumber = ms; } elm.step = 1; Object.keys(setting).forEach((key) => { const value = setting[key]; elm[key] = value; }); return elm; } function Space(parent, n = 1) { let elm = document.createElement("div"); parent.appendChild(elm); elm.style.minWidth = n + "em"; elm.style.minHeight = n + "em"; return elm; } /** * * @param {HTMLDivElement} parent * @param {String} classname * @param {CSSStyleDeclaration} style * @returns {HTMLImageElement} */ function Img(parent, src = "", classname = "", style = {}) { let elm = new Image(); if (parent) { parent.appendChild(elm); } elm.src = src; elm.className = classname; Object.keys(style).forEach((key) => { const value = style[key]; elm.style[key] = value; }); return elm; } /** * * @param {HTMLDivElement} parent * @param {CSSStyleDeclaration} style * @returns {HTMLStyleElement} */ function Style(parent, text = "") { let elm = document.createElement("style"); if (parent) { parent.appendChild(elm); } elm.innerHTML = text; return elm; } /** * * @param {HTMLDivElement} parent * @param {CSSStyleDeclaration} style * @returns {HTMLLIElement} */ function Li(parent, text = "") { let elm = document.createElement("li"); if (parent) { parent.appendChild(elm); } elm.innerHTML = text; return elm; }