我正在编写一个快速日志函数来包装本机,console.log以防止以后在开发中出现错误(比如console.log代码中的遗忘语句).我正在使用mootools $defined和$type函数来检查是否存在控制台和console.log函数,然后再调用它.但是当我禁用firebug时,我在firefox中遇到以下错误.
错误:未定义控制台
源文件:http://diagnostic.localhost/js/emp.custom.js
行:6
EMP.log = function() {
if (DEBUG && $defined(console) && $type(console.log) == 'function') { //line 6
var args = Array.prototype.slice.call(arguments); //turn arguments into array
console.log.pass(args);
}
}
Run Code Online (Sandbox Code Playgroud)
似乎使用$defined应该消除这个错误,所以有没有人有任何想法可能是什么问题?
我正在使用mootools v1.2.3.
编辑:我尝试了以下,他们也给了他们同样的错误:
if (DEBUG && $type(console) == "object" && $type(console.log) == 'function') {
if (DEBUG && $chk(console) && $type(console.log) == 'function') {
Run Code Online (Sandbox Code Playgroud) 我正在阅读David Walsh关于使用MooTools创建精灵菜单的帖子.我是MooTools的新手,我不明白他打开剧本的方式.特别是,是什么
(function($){
..
})(document.id)
Run Code Online (Sandbox Code Playgroud)
它是一种JS闭包吗?
如果您不想关注该链接,请参阅完整脚本:
(function($) {
window.addEvent('domready',function() {
$('nav').getElements('li').each(function(li) {
//settings
var link = li.getFirst('a');
//fix background image
if(!li.hasClass('current')) {
link.setStyle('background-image','none');
}
//utility div
var div = new Element('div',{
'class': 'nav-' + li.get('id'),
opacity: 0
}).inject(li);
//background imagery
li.addEvents({
mouseenter: function() {
div.fade('in');
},
mouseleave: function() {
div.fade('out');
},
mousedown: function() {
div.addClass('nav-' + li.get('id') + '-click');
},
mouseup: function() {
div.removeClass('nav-' + li.get('id') + '-click');
}
});
});
});
})(document.id);
Run Code Online (Sandbox Code Playgroud) 我想使用这些东西.我希望他们选择聪明的命名约定来防止与其所有函数和类的冲突?有人在一个网站上同时使用所有这些吗?
我正在使用MooTools(项目的一部分)来加载页面,使用Request.HTML它可以正常工作,除了我不想要整个页面,只有一个具有id的片段.
这是有问题的代码
var req = new Request.HTML({
onSuccess: function( res ) {
// according to the docs
// res should be the node list of the remote response
// I want to grab #myFragment
var f = res.getElementById('myFragment');
// res.getElementById is not a function
var f = $(res).getElementById('myFragment');
// $(res) is null ?
var f = $$(res).getElementById('myFragment');
// [null, null] ??
// more code
}
}).get('/myurl');
Run Code Online (Sandbox Code Playgroud)
我很确定这一定是可能的,我可以抓住有类的元素.有谁知道如何做到这一点.
谢谢 )
可能误解了一些简单的东西,但我似乎无法让它发挥作用.
我想:通过"wrapper"中的每个img元素,并从title属性中删除所有html(使用来自mootools的stripTags()更多).我收到错误:
"this.get不是一个函数"
这是代码:
$('wrapper').getElements('img').each(function() {
var oldAlt = this.get('title').stripTags();
this.setProperty('alt', oldAlt);
});
Run Code Online (Sandbox Code Playgroud)
提前致谢
我用mootools做了这个:
$("fox").addEvent("click", function(){
alert("clicked");
});
Run Code Online (Sandbox Code Playgroud)
和HTML:
<p id="fox">A</p>
Run Code Online (Sandbox Code Playgroud)
现在,如果我在这里尝试它http://jsfiddle.net/5uJ54/3/,它的工作原理,但如果我在浏览器中尝试它,这就是它没有的所有代码,我在firebug得到这个:
$("fox") is null
Run Code Online (Sandbox Code Playgroud)
它也不适用于铬.
为什么会这样?我也尝试将所有内容放在一个函数中,但它仍然无法正常工作.
我在mootools开发了一个应用程序.但它包含的标签数量很少,几乎是10,000.每个标签的结构如下:
<div style="float:left;padding:5px;margin: 6px;"> <!-- tag-1 -->
<img src=""> <p>name</p> <p>Gender</p> <p>Mood</p>
</div>
Run Code Online (Sandbox Code Playgroud)
在以下容器中
<div id="tags_container" style="overflow: scroll;height: 700px;">
<div style="float:left;padding:5px;margin: 6px;"> <!-- tag-1 -->
<img src=""> <p>name</p> <p>Gender</p> <p>Mood</p>
</div>
<!-- tag-2 -->
.
.
.
<!-- all tags one after another -->
</div>
Run Code Online (Sandbox Code Playgroud)
我以行和列格式显示这些标签(5列和2000行).id ="tags_container"<div>具有垂直滚动条.但当我尝试向下滚动该分区以查看更多标签时,它滚动的速度很慢.
我该怎么办呢?
我应该将实现方法从<div>标签更改为<table>标签吗?
有什么选择让它更快?
在之前的几个问题中,我被建议不要在一个单独的文档中使用那么多标签,但是会有那么多标签,所以我该怎么办呢.
如何在Mootools中从字符串(从ajax传递)创建DOM元素?
在jQuery中,一个简单的解决方案是 $( elements )
var elements = '<i>This is italic</i><b>this bold</b>...';
Run Code Online (Sandbox Code Playgroud) mootools有相当于jQuery的before吗?或者如果没有,我如何在mootools中执行类似的功能?
例如,我从ajax获得结果,我想在某个元素之前插入结果的HTML代码.
<div class="elements">
<div class="element"></div>
<div class="element"></div>
<div class="element"></div>
</div class="loader"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
我想之前插入一些HTML代码(这是字符串).loader.我不能在这个问题上使用JSON或HTML like对象.
我有将HTML插入div的功能:
function appendHTML(elem, html){
if ($type(html) != 'string') return false;
var temp = new Element('div');
temp.set('html', html);
elem.adopt(temp.childNodes);
return this;
}
Run Code Online (Sandbox Code Playgroud)
但我想在div之前插入HTML代码,而不是插入.谢谢!
我有两个元素ID,a和b.我想做这样的事情:
[$('a'), $('b')].addEvent('click', myFunction);
Run Code Online (Sandbox Code Playgroud)
但该特定代码给出"TypeError :(中间值).addEvent不是函数".
我是否需要显式循环(或复制addEvent调用)?
[$('a'), $('b')].each(function(el){
el.addEvent('click', myFunction);
});
Run Code Online (Sandbox Code Playgroud)
要么
$('a').addEvent('click', myFunction);
$('b').addEvent('click', myFunction);
Run Code Online (Sandbox Code Playgroud)
还是有更干净的方式?