无法阅读属性' childNodes'未定义的错误,但仅限于chrome

时间:2013-08-28 09:25:16

标签: javascript google-chrome dom knockout.js cross-browser

我正在使用knockout.js为客户创建拖放日记,我刚刚切换到chrome测试,我在"Cannot read property 'childNodes' of undefined"函数中遇到了这个神秘的错误parseBindingString然而,这个模板在FireFox / IFE10中进行了测试和工作。

错误在css: { blackout: workingHours($parent.DaysArray(0), $parents[1].ViewDate()).startTime.getTime() == workingHours($parent.DaysArray(0), $parents[1].ViewDate()).finishTime.getTime() }绑定上抛出,但是在调试器上下文中node局部变量有4个注册子节点,因此淘汰必须尝试在这里进行一些严格的树导航,我的workingHours()函数根本不需要,或者将blackout类添加到当前节点。

我认为这只是因为在浏览器之间构建DOM的方式存在细微差别而在chrome中出现,但是有人可以就如何解决这类问题提供一些建议吗?或者要检查的事情?

<td data-bind="
    css: { 
        blackout: workingHours($parent.DaysArray(0), $parents[1].ViewDate()).startTime.getTime() == workingHours($parent.DaysArray(0), $parents[1].ViewDate()).finishTime.getTime() }">
    <div class="unallocated-booking">
        <div class="status-bar-holder mini-status-bar-holder" data-bind="
            template: { 
                name: 'unallocated-booking-template', 
                foreach: todaysBookings($parent.DaysArray(0), bookings, $parents[1].ViewDate()) }"/>
    </div>
    <div data-bind="
        attr: { 
            'data-init-droppable': false }, 
        class: { 
            droppable: isWorkDay( $parent.DaysArray(0), $parents[1].ViewDate() ) }, 
        template: { 
            name: 'week-cell-template', 
            foreach: todaysBookings($parent.DaysArray(0), bookings, $parents[1].ViewDate()) }"/>
</td>

轻微一点(可能需要一个单独的问题)但具有讽刺意味的是我只尝试加载chrome,因为最后一个元素的attr / class / template绑定似乎忽略了{ {1}}&amp; class绑定,因为我添加了attr绑定,我想在chrome中调试。但是因为我已经引起了所有人的关注。我已经认为我已经把它插在这里了:p。甚至可能是相关的,虽然我看不出我的语法问题。

1 个答案:

答案 0 :(得分:1)

Knockout.js不是这个问题的原因

getElementsByTagName()在Chrome中的工作方式不同,因为它不需要(或在何处工作)指定搜索元素的命名空间。