Mootools与纯JS脚本之间的冲突

时间:2011-09-28 11:19:10

标签: mootools

我遇到了一个纯JS脚本,应该包含在Joomla中(1.7,Mootools 1.3.2)

并在完全在其外工作时引发与此库的冲突。

示例:

第133行附近的Firebug错误:

document.getElementById("pu_" + champs[i]) is null

我尝试了各种解决方案,重命名某些变量,使用$而不是document.getElementById,将每个函数包装在一个匿名函数周围。无济于事。

如果有人能指出正确的方向,我将非常感激。

1 个答案:

答案 0 :(得分:1)

mootools是典型的。

var champs = ['surfaceMaison','surfaceGarage','terrasseCouverte','terrasseNonCouverte','cloture'];
var prix = ['pack','valeur','valeur','valeur'];
var options = ['toitureMultipentes','doucheItalienne','wcSuspendu','enduitTaloche','voletsRoulants','climGainable'];


// and..
for (var i in champs) 


for (var i in options) 

是不行的,它会上升到原型链并获得mootools添加到Array原型中的东西。

一般来说,作为构造的for var in object一直用于OBJECTS而不是数组。无论如何它都有用,因为在javascript中你没有合适的数组类型,它只是一个具有类似数组属性的Object类型(例如,length)。

通过options.each(function(el, i) {}或普通for循环来循环数组。

另外,您可以查看hasOwnProperty

for (var i in champs) 
    if (champs.hasOwnProperty(i)) {
        // do the stuff
    }