📄 dom.js
字号:
var values = []; var m = MochiKit.Base; var self = MochiKit.DOM; if (typeof(elem) == "undefined" || elem === null) { elem = self._document; } else { elem = self.getElement(elem); } m.nodeWalk(elem, function (elem) { var name = elem.name; if (m.isNotEmpty(name)) { var tagName = elem.nodeName; if (tagName == "INPUT" && (elem.type == "radio" || elem.type == "checkbox") && !elem.checked ) { return null; } if (tagName == "SELECT") { if (elem.selectedIndex >= 0) { var opt = elem.options[elem.selectedIndex]; names.push(name); values.push((opt.value) ? opt.value : opt.text); return null; } // no form elements? names.push(name); values.push(""); return null; } if (tagName == "FORM" || tagName == "P" || tagName == "SPAN" || tagName == "DIV" ) { return elem.childNodes; } names.push(name); values.push(elem.value || ''); return null; } return elem.childNodes; }); return [names, values]; }, withDocument: function (doc, func) { var self = MochiKit.DOM; var oldDoc = self._document; var rval; try { self._document = doc; rval = func(); } catch (e) { self._document = oldDoc; throw e; } self._document = oldDoc; return rval; }, registerDOMConverter: function (name, check, wrap, /* optional */override) { MochiKit.DOM.domConverters.register(name, check, wrap, override); }, coerceToDOM: function (node, ctx) { var im = MochiKit.Iter; var self = MochiKit.DOM; var iter = im.iter; var repeat = im.repeat; var imap = im.imap; var domConverters = self.domConverters; var coerceToDOM = self.coerceToDOM; var NotFound = MochiKit.Base.NotFound; while (true) { if (typeof(node) == 'undefined' || node === null) { return null; } if (typeof(node.nodeType) != 'undefined' && node.nodeType > 0) { return node; } if (typeof(node) == 'number' || typeof(node) == 'boolean') { node = node.toString(); // FALL THROUGH } if (typeof(node) == 'string') { return self._document.createTextNode(node); } if (typeof(node.toDOM) == 'function') { node = node.toDOM(ctx); continue; } if (typeof(node) == 'function') { node = node(ctx); continue; } // iterable var iterNodes = null; try { iterNodes = iter(node); } catch (e) { // pass } if (iterNodes) { return imap( coerceToDOM, iterNodes, repeat(ctx) ); } // adapter try { node = domConverters.match(node, ctx); continue; } catch (e) { if (e != NotFound) { throw e; } } // fallback return self._document.createTextNode(node.toString()); } // mozilla warnings aren't too bright return undefined; }, setNodeAttribute: function (node, attr, value) { var o = {}; o[attr] = value; try { return MochiKit.DOM.updateNodeAttributes(node, o); } catch (e) { // pass } return null; }, getNodeAttribute: function (node, attr) { var self = MochiKit.DOM; var rename = self.attributeArray.renames[attr]; node = self.getElement(node); try { if (rename) { return node[rename]; } return node.getAttribute(attr); } catch (e) { // pass } return null; }, updateNodeAttributes: function (node, attrs) { var elem = node; var self = MochiKit.DOM; if (typeof(node) == 'string') { elem = self.getElement(node); } if (attrs) { var updatetree = MochiKit.Base.updatetree; if (self.attributeArray.compliant) { // not IE, good. for (var k in attrs) { var v = attrs[k]; if (typeof(v) == 'object' && typeof(elem[k]) == 'object') { updatetree(elem[k], v); } else if (k.substring(0, 2) == "on") { if (typeof(v) == "string") { v = new Function(v); } elem[k] = v; } else { elem.setAttribute(k, v); } } } else { // IE is insane in the membrane var renames = self.attributeArray.renames; for (k in attrs) { v = attrs[k]; var renamed = renames[k]; if (k == "style" && typeof(v) == "string") { elem.style.cssText = v; } else if (typeof(renamed) == "string") { elem[renamed] = v; } else if (typeof(elem[k]) == 'object' && typeof(v) == 'object') { updatetree(elem[k], v); } else if (k.substring(0, 2) == "on") { if (typeof(v) == "string") { v = new Function(v); } elem[k] = v; } else { elem.setAttribute(k, v); } } } } return elem; }, appendChildNodes: function (node/*, nodes...*/) { var elem = node; var self = MochiKit.DOM; if (typeof(node) == 'string') { elem = self.getElement(node); } var nodeStack = [ self.coerceToDOM( MochiKit.Base.extend(null, arguments, 1), elem ) ]; var concat = MochiKit.Base.concat; while (nodeStack.length) { var n = nodeStack.shift(); if (typeof(n) == 'undefined' || n === null) { // pass } else if (typeof(n.nodeType) == 'number') { elem.appendChild(n); } else { nodeStack = concat(n, nodeStack); } } return elem; }, replaceChildNodes: function (node/*, nodes...*/) { var elem = node; var self = MochiKit.DOM; if (typeof(node) == 'string') { elem = self.getElement(node); arguments[0] = elem; } var child; while ((child = elem.firstChild)) { elem.removeChild(child); } if (arguments.length < 2) { return elem; } else { return self.appendChildNodes.apply(this, arguments); } }, createDOM: function (name, attrs/*, nodes... */) { /* Create a DOM fragment in a really convenient manner, much like Nevow's <http://nevow.com> stan. */ var elem; var self = MochiKit.DOM; var m = MochiKit.Base; if (typeof(attrs) == "string" || typeof(attrs) == "number") { var args = m.extend([name, null], arguments, 1); return arguments.callee.apply(this, args); } if (typeof(name) == 'string') { // Internet Explorer is dumb if (attrs && "name" in attrs && !self.attributeArray.compliant) { // http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/name_2.asp name = ('<' + name + ' name="' + self.escapeHTML(attrs.name) + '">'); } elem = self._document.createElement(name); } else { elem = name; } if (attrs) { self.updateNodeAttributes(elem, attrs); } if (arguments.length <= 2) { return elem; } else { var args = m.extend([elem], arguments, 2); return self.appendChildNodes.apply(this, args); } }, createDOMFunc: function (/* tag, attrs, *nodes */) { var m = MochiKit.Base; return m.partial.apply( this, m.extend([MochiKit.DOM.createDOM], arguments) ); }, swapDOM: function (dest, src) { var self = MochiKit.DOM; dest = self.getElement(dest); var parent = dest.parentNode; if (src) { src = self.getElement(src); parent.replaceChild(src, dest); } else { parent.removeChild(dest); } return src; }, getElement: function (id) { var self = MochiKit.DOM; if (arguments.length == 1) { return ((typeof(id) == "string") ? self._document.getElementById(id) : id); } else { return MochiKit.Base.map(self.getElement, arguments); } }, computedStyle: function (htmlElement, cssProperty, mozillaEquivalentCSS) { if (arguments.length == 2) { mozillaEquivalentCSS = cssProperty; } var self = MochiKit.DOM; var el = self.getElement(htmlElement); var document = self._document; if (!el || el == document) { return undefined; } if (el.currentStyle) { return el.currentStyle[cssProperty]; } if (typeof(document.defaultView) == 'undefined') { return undefined; } if (document.defaultView === null) { return undefined; } var style = document.defaultView.getComputedStyle(el, null); if (typeof(style) == "undefined" || style === null) { return undefined; } return style.getPropertyValue(mozillaEquivalentCSS); }, getElementsByTagAndClassName: function (tagName, className, /* optional */parent) { var self = MochiKit.DOM; if (typeof(tagName) == 'undefined' || tagName === null) { tagName = '*'; } if (typeof(parent) == 'undefined' || parent === null) { parent = self._document; } parent = self.getElement(parent); var children = (parent.getElementsByTagName(tagName) || self._document.all); if (typeof(className) == 'undefined' || className === null) { return MochiKit.Base.extend(null, children); } var elements = []; for (var i = 0; i < children.length; i++) { var child = children[i]; var classNames = child.className.split(' '); for (var j = 0; j < classNames.length; j++) { if (classNames[j] == className) { elements.push(child); break; } } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -