我很难搞清楚如何移动数组元素.例如,给出以下内容:
var arr = [ 'a', 'b', 'c', 'd', 'e'];
Run Code Online (Sandbox Code Playgroud)
我怎么能写一个'd'以前移动的函数'b'?
还是'a'之后'c'?
移动后,应更新其余元素的索引.这意味着在第一个例子中,移动arr [0]将='a',arr [1] ='d'arr [2] ='b',arr [3] ='c',arr [4] = 'E'
这看起来应该很简单,但我无法绕过它.
以下是速记$(document).ready吗?
(function($){
//some code
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
我看到这种模式使用了很多,但我找不到任何引用.如果它是速记$(document).ready(),是否有任何特殊原因可能无效?在我的测试中,似乎总是在准备好的事件之前开火.
我在一个文件中创建了一个包含所有代码的javascript应用程序.该应用程序已经增长了很多,我认为是时候将它分成多个文件,但我很难搞清楚如何做到这一点.我认为问题在于我如何决定构建应用程序,该应用程序使用以下模板:
var myApp = function(){
//there are several global variables that all of the modules use;
var global1, global2, module1, module2;
global1 = {
prop1:1
};
//There are also several functions that are shared between modules
function globalFunction(){
}
var ModuleOne = function(){
function doSomething(){
//using the global function
globalFunction();
}
return{
doSomething:doSomething
}
};
var ModuleTwo = function(){
function doSomething(){
//module 2 also needs the global function
globalFunction();
//Use the functionality in module 1
//I can refactor this part …Run Code Online (Sandbox Code Playgroud) 我只是注意到,只要调整浏览器窗口大小,jquery resize事件就会触发两次.我找不到任何将此列为默认行为的文档.我已经使用jQuery 1.4和1.5在最新版本的Chrome和Firefox中对此进行了测试.
有没有人看到这种行为?它有具体原因吗?
更新:如果我单击浏览器窗口上的最大化按钮一次,就会发生这种情况.我知道如果我手动将窗口拖动到不同的大小,事件将被多次触发,但最大化按钮不应该是这种情况.
使用的代码测试如下.浏览器调整大小的文本输出两次:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
</head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.js"></script>
<script type="text/javascript">
$(window).resize(function(){
console.log('Browser Resized');
});
</script>
<body>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 看起来这两个网站(Freshbooks和Harvest)只能通过收集用户的PayPal电子邮件地址代表其用户接受PayPal付款,并且付款直接发送给用户(而不是流经Freshbooks和Harvest自己的帐户).PayPal API支持哪些功能?
我没有看到任何迹象表明这在当前的API文档中是可行的 https://developer.paypal.com/docs/api/
IE Tester没有控制台,在这个软件中似乎忽略了警告框.这是预期的行为吗?如果是这样,如何使用此工具调试javascript?
我安装了调试栏,但除了允许我查看DOM之外,它似乎没有做任何有用的事情.
我需要能够在脚本执行期间检查各种对象的状态,但我不知道如何在没有控制台或警告框的情况下执行此操作.任何帮助是极大的赞赏.
function a (){
this.testing = 'testing';
}
function b (){
}
b.prototype = new a();
console.log(b.testing);
Run Code Online (Sandbox Code Playgroud)
控制台显示未定义,而不是"测试".我究竟做错了什么?
我正在使用php将用户重定向到受apache基本身份验证保护的目录.我使用以下url格式自动将用户登录到此目录:
http://用户名:password@www.somewebsite.com/protected.
这适用于除IE之外的所有浏览器,IE不再支持在URL中传递用户名/密码.
Web应用程序是否有另一种方法可以自动将用户登录到受apache基本身份验证保护的目录中?
更新:如果可能,请忽略使用apache基本身份验证和http的固有缺点,除非您能够提供解决此问题的可行替代方案...即如何自动将用户登录到受保护目录.这适用于已经使用apache基本身份验证的客户端.谢谢 :)
我经常看到以下两种模式.两者有什么区别?什么时候适合?
$.pluginName = function(){}
Run Code Online (Sandbox Code Playgroud)
和
$.fn.pluginName = function(){}
Run Code Online (Sandbox Code Playgroud) 给定以下selector $('parent> child'),我相信jQuery将首先查询所有'child'元素,然后过滤到'parent'的直接后代.这可能是非常低效的.
我的第一直觉是使用$('parent').find('child'),但结果显然与$('parent> child')不同.
有没有更好的方法来编写这个选择器?
对于undefined,这个测试有什么问题吗?
var undefined;
if(x == undefined){
//do something
}
Run Code Online (Sandbox Code Playgroud)
或这个:
function undefined(x){
return typeof x == 'undefined';
}
if(undefined(x)){
//do something
}
Run Code Online (Sandbox Code Playgroud)
jsLint不会抛出一个保留字的错误,但代码似乎仍然有效......
我正在尝试构建一个将html_entity_decode应用于对象和数组的函数.由于我事先不知道结构,并且子属性也可以是对象或数组,因此简单的递归函数似乎是要走的路.我无法弄清楚为什么以下不起作用:
function decode($data){
if(is_object($data) || is_array($data)){
foreach($data as &$value)
$value = $this->decode($value);
}
else $data = html_entity_decode($data);
return $data;
}
Run Code Online (Sandbox Code Playgroud)
我也试过以下,但也不起作用:
function decode($data){
if(is_object($data))
$data = get_object_vars($data);
$data = is_array($data) ? array_map(array('MyClassName', 'decode'), $data) : html_entity_decode($data);
return $data;
}
Run Code Online (Sandbox Code Playgroud)
这两种功能都不会对数据产生任何影响.我究竟做错了什么?
javascript ×7
jquery ×4
apache ×1
arrays ×1
http ×1
inheritance ×1
oop ×1
paypal ×1
performance ×1
php ×1
prototype ×1
security ×1
shorthand ×1