var string = '<div class="calendar">Feb 22</div>';
var elementFromString = getElementFromString(string);
function getElementFromString(string) {
var element;
var elementInfo = new function() {
this.type = getInfoFromString("elementType");
this.attributes = {
className: getInfoFromString("className"),
innerHTML: [
"<" + this.type + " class = 'calendarMonth'>",
getInfoFromString("calendarMonth"),
"</" + this.type + ">",
"<" + this.type + " class = 'calendarDay'>",
getInfoFromString("calendarDay"),
"</" + this.type + ">",
].join(""),
};
};
createElement(elementInfo);
return element;
function getInfoFromString(infoName) {
var info;
var setInfoTo = {
elementType: setInfoToElementType,
className: setInfoToClassName,
calendarMonth: setInfoToCalendarMonth,
calendarDay: setInfoToCalendarDay,
};
setInfoTo[infoName]();
return info;
function setInfoToElementType() {
info = /<(\w+)/.exec(string)[1];
}
function setInfoToClassName() {
info = /="(\w+)"/.exec(string)[1];
}
function setInfoToCalendarMonth() {
info = /<.*>(\w+)/.exec(string)[1];
}
function setInfoToCalendarDay() {
info = /<.*>\w+ (\d+)/.exec(string)[1];
}
}
function createElement() {
element = document.createElement(elementInfo.type);
var attributeName;
var attributeValue;
for (attributeName in elementInfo.attributes) {
attributeValue = elementInfo.attributes[attributeName];
element[attributeName] = attributeValue;
}
}
}
我不认为这真的回答了OP的问题。你可以在你的代码中添加一些上下文来解释为什么这个答案有效/比给出的其他答案更好? – mdewitt 2014-09-23 00:48:58
抱歉Mdewitt。这实际上是我第一次在Stack Overflow * SorryFace *上提出一个答案。你是对的。我使用正则表达式从字符串中提取感兴趣的数据,然后用它来构建新元素。 – user1430588 2014-09-23 02:22:53
现在肯定更好,这里有更多的代码! :)。你还可以添加更多的上下文吗?一些句子解释了你的代码的作用,以及为什么它是一个好的答案,尤其是因为已经有了一个可以接受的答案。 – mdewitt 2014-09-23 03:56:46