#mootools
#mootools
Вопрос:
Я застрял с чистым JS-скриптом, который должен быть включен в Joomla (1.7, Mootools 1.3.2)
и вызывает конфликт с этой библиотекой, прекрасно работая вне ее.
Примеры :
-
нет Mootools http://jsfiddle.net/2W87v /
-
с Mootools http://jsfiddle.net/2W87v/1 /
Ошибка Firebug в строке 133 :
document.getElementById("pu_" champs[i]) is null
Я пробовал всевозможные решения, переименовывая определенные переменные, используя $ вместо document.getElementById, оборачивая каждую функцию вокруг анонимной функции. Безрезультатно.
Если бы кто-нибудь мог указать правильное направление, я был бы очень благодарен.
Ответ №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 добавляет к прототипу массива.
в общем, for var in object
конструкция as всегда предназначалась для ОБЪЕКТОВ, а не для массивов. это работает в любом случае, потому что в javascript у вас нет правильного типа массива, это просто тип объекта со свойствами, подобными массиву (например, длина).
вместо этого выполните цикл массивов с помощью options.each(function(el, i) {}
или обычного цикла for .
кроме того, вы можете проверить hasOwnProperty
:
for (var i in champs)
if (champs.hasOwnProperty(i)) {
// do the stuff
}