Конфликт между Mootools и чистым JS-скриптом - PullRequest
0 голосов
/ 28 сентября 2011

Я застрял с чистым JS-скриптом, который должен быть включен в Joomla (1.7, Mootools 1.3.2)

, и вызывает конфликт с этой библиотекой, в то же время прекрасно работая вне ее.

Примеры:

Ошибка Firebug вокруг строки 133:

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

Я испробовал все виды решений, переименовывая определенные переменные, используя $ вместо document.getElementById, оборачивая каждую функцию вокруг анонимной функции.Безрезультатно.

Если бы кто-то мог указать в правильном направлении, я был бы очень признателен.

1 Ответ

1 голос
/ 28 сентября 2011

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 как конструкция всегда предназначалась для ОБЪЕКТОВ, а не массивов. это работает в любом случае, потому что в javascript у вас нет правильного типа Array, это просто тип объекта с массивными свойствами (например, длина).

зацикливает массивы через options.each(function(el, i) {} или вместо обычного цикла for.

также вы можете проверить на hasOwnProperty:

for (var i in champs) 
    if (champs.hasOwnProperty(i)) {
        // do the stuff
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...