Mootools 和纯 JS 脚本之间的冲突

发布于 2024-12-06 19:30:24 字数 562 浏览 0 评论 0原文

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

并且在该库之外完美工作时引发了与该库的冲突。

示例:

第 133 行周围的 Firebug 错误:

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

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

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

I am stuck with a pure JS script that should be included in Joomla (1.7, Mootools 1.3.2)

and raises a conflict with this library while working perfectly outside it.

Examples :

Firebug error around line 133 :

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

I tried all kinds of solutions, renaming certain variables, using $ instead of document.getElementById, wrapping each function around an anonymous function. To no avail.

If someone could point in the right direction, I'd be very grateful.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

在巴黎塔顶看东京樱花 2024-12-13 19:30:24

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 作为构造始终适用于 OBJECTS 而不是数组。无论如何它都可以工作,因为在 javascript 中你没有合适的数组类型,它只是一个具有类似数组属性(例如长度)的对象类型。

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

此外,您还可以检查 hasOwnProperty

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

mootools is prototypical.

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) 

is a no go as is, it will go up the prototype chain and get the stuff mootools adds to the Array prototype.

in general, for var in object as a construct has always been intended for OBJECTS and not arrays. it works anyway, because in javascript you don't have a proper Array type, it's just an Object type with Array-like properties (eg, length).

loop the arrays via options.each(function(el, i) {} or a normal for loop instead.

also, you can check for hasOwnProperty:

for (var i in champs) 
    if (champs.hasOwnProperty(i)) {
        // do the stuff
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文