我遇到了一个纯JS脚本,应该包含在Joomla中(1.7,Mootools 1.3.2)
并在完全在其外工作时引发与此库的冲突。
示例:
没有Mootools http://jsfiddle.net/2W87v/
与Mootools合作 http://jsfiddle.net/2W87v/1/
第133行附近的Firebug错误:
document.getElementById("pu_" + champs[i]) is null
我尝试了各种解决方案,重命名某些变量,使用$而不是document.getElementById,将每个函数包装在一个匿名函数周围。无济于事。
如果有人能指出正确的方向,我将非常感激。
答案 0 :(得分:1)
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
}