我们有两种不同的方式来在JavaScript中进行函数expression: 命名函数expression式(NFE) : var boo = function boo () { alert(1); }; 匿名函数expression式 : var boo = function () { alert(1); }; 这两个都可以用boo();来调用boo(); 。 我真的不明白为什么/当我应该使用匿名函数,当我应该使用命名函数expression式。 他们之间有什么不同?
我有一个脚本,它使用innerHTML将一些内容插入到一个元素中。 内容可能是例如: <script type="text/javascript">alert('test');</script> <strong>test</strong> 问题是<script>标签内的代码没有得到执行。 我GOOGLE了一下,但没有明显的解决办法。 如果我使用jQuery $(element).append(content);插入$(element).append(content); 脚本部分在被注入到DOM之前已经被eval了。 有没有人得到执行所有<script>元素的代码片段? jQuery代码有点复杂,所以我无法弄清楚它是如何完成的。 编辑 : 通过偷看到jQuery代码,我已经设法弄清楚jQuery是如何做到的,这导致了下面的代码: Demo: <div id="element"></div> <script type="text/javascript"> function insertAndExecute(id, text) { domelement = document.getElementById(id); domelement.innerHTML = text; var scripts = []; ret = domelement.childNodes; for ( var i = 0; ret[i]; i++ ) { if ( scripts && nodeName( ret[i], "script" ) […]
我正在尝试为博客平台创build一个构造函数,并且里面有许多asynchronous操作。 这些范围从抓取目录中的post,parsing它们,通过模板引擎发送它们等等。 所以我的问题是,让我的构造函数返回一个承诺,而不是他们所谓的newfunction的对象是不明智的。 例如: var engine = new Engine({path: '/path/to/posts'}).then(function (eng) { // allow user to interact with the newly created engine object inside 'then' engine.showPostsOnOnePage(); }); 现在,用户也可能不提供补充Promise链接: var engine = new Engine({path: '/path/to/posts'}); // ERROR // engine will not be available as an Engine object here 这可能会造成问题,因为用户可能会困惑为什么 engine 在施工后不可用。 在构造函数中使用Promise的原因是有道理的。 我希望整个博客在施工阶段后能够正常运行。 但是,在调用new之后,似乎几乎不能立即访问对象。 我讨论过使用engine.start().then()或engine.init()这样的方法来代替Promise。 但是那些也似乎是臭的。 […]
我正在使用jQuery SVG。 我不能添加或删除一个类到一个对象。 有人知道我的错误? SVG: <rect class="jimmy" id="p5" x="200" y="200" width="100" height="100" /> 不会添加类的jQuery: $(".jimmy").click(function() { $(this).addClass("clicked"); }); 我知道SVG和jQuery一起工作正常,因为我可以定位对象,并在点击时发出警报: $(".jimmy").click(function() { alert('Handler for .click() called.'); });
我想从一个iframe调用一个父窗口JavaScript函数。 <script> function abc() { alert("sss"); } </script> <iframe id="myFrame"> <a onclick="abc();" href="#">Call Me</a> </iframe>
有没有办法在jQuery循环或分配给一个数组的所有类分配给一个元素? 恩。 <div class="Lorem ipsum dolor_spec sit amet">Hello World!</div> 我将在上面的“dolor_spec”中寻找一个“特殊”类。 我知道我可以使用hasClass(),但实际的类名不一定是当时已知的。
如何打印指定的div(无需手动禁用页面上的所有其他内容)? 我想避免一个新的预览对话框,所以用这个内容创build一个新的窗口是没有用的。 该页面包含几个表格,其中一个表格包含我想要打印的div – 该表格的样式是针对网页的可视样式,不应该在打印中显示。
我有一个文本input和一个button(见下文)。 在文本框中按下Enter键时,如何使用JavaScript 触发button的单击事件 ? 在我的当前页面上已经有了一个不同的提交button,所以我不能简单地按下一个提交button。 而且,我只想要Enter键从这个文本框中按下这个特定的button,没有别的。 <input type="text" id="txtSearch" /> <input type="button" id="btnSearch" value="Search" onclick="doSomething();" />
我有一个AngularJS服务,我想用一些asynchronous数据进行初始化。 像这样的东西: myModule.service('MyService', function($http) { var myData = null; $http.get('data.json').success(function (data) { myData = data; }); return { setData: function (data) { myData = data; }, doStuff: function () { return myData.getSomeData(); } }; }); 显然,这是行不通的,因为如果在myData返回之前试图调用doStuff() ,我将得到一个空指针exception。 据我所知,在这里和这里提出的其他一些问题,我有几个select,但没有一个看起来很干净(也许我错过了一些东西): 安装服务与“运行” 当设置我的应用程序这样做: myApp.run(function ($http, MyService) { $http.get('data.json').success(function (data) { MyService.setData(data); }); }); 然后我的服务将如下所示: myModule.service('MyService', function() { var […]
我有一个search字段。 现在它search每个键盘。 因此,如果有人input“Windows”,它将使用AJAXsearch每个键盘:“W”,“Wi”,“Win”,“Wind”,“Windo”,“Window”,“Windows”。 我想有一个延迟,所以只有当用户停止input200毫秒时才进行search。 在这个keyup函数中没有这个选项,我尝试了setTimeout ,但是没有成功。 我怎样才能做到这一点?