diff --git a/snabbdom.js b/snabbdom.js index ef026ff..a1bf311 100644 --- a/snabbdom.js +++ b/snabbdom.js @@ -66,7 +66,7 @@ function updateProps(elm, oldProps, props) { for (name in val) { on = val[name]; if (on !== oldProps.style[name]) { - elm.style[name] = val[name]; + elm.style[name] = on; } } } else if (key === 'class') { @@ -86,12 +86,12 @@ function createElm(vnode) { var elm, children; if (!isUndef(vnode.tag)) { elm = document.createElement(vnode.tag); - if (!isUndef(vnode.tag)) { + if (!isUndef(vnode.props)) { updateProps(elm, emptyNode.props, vnode.props); } children = vnode.children; if (isArr(children)) { - for (var i = 0; i < vnode.children.length; ++i) { + for (var i = 0; i < children.length; ++i) { elm.appendChild(createElm(children[i])); } } else if (isPrimitive(vnode.text)) { @@ -111,9 +111,9 @@ function sameVnode(vnode1, vnode2) { function createKeyToOldIdx(children, beginIdx, endIdx) { var i, map = {}; for (i = beginIdx; i <= endIdx; ++i) { - var ch = children[i]; - if (!isUndef(ch.props) && !isUndef(ch.props.key)) { - map[ch.props.key] = i; + var props = children[i].props; + if (!isUndef(props) && !isUndef(props.key)) { + map[props.key] = i; } } return map; @@ -192,8 +192,8 @@ function updateChildren(parentElm, oldCh, newCh) { for (; oldStartIdx <= oldEndIdx; ++oldStartIdx) { var ch = oldCh[oldStartIdx]; if (!isUndef(ch)) { - parentElm.removeChild(oldCh[oldStartIdx].elm); - oldCh[oldStartIdx].elm = undefined; + parentElm.removeChild(ch.elm); + ch.elm = undefined; } } }