小编Mic*_*ker的帖子

如何在javascript中初始化数组的长度?

我在JavaScript中使用数组(包括w3schoolsdevguru)阅读的大多数教程都建议您可以使用var test = new Array(4);语法将整数传递给Array构造函数来初始化具有一定长度的数组.

在我的js文件中大量使用这种语法之后,我通过jsLint运行了一个文件,它吓坏了:

错误:第1行字符22处的问题:预期')'而是看到'4'.
var test = new Array(4);
第1行第23个问题:预期';' 而是看到')'.
var test = new Array(4);
第1行字符23处的问题:预期标识符而不是')'.

通过阅读jsLint对其行为的解释后,看起来jsLint并不真正喜欢new Array()语法,而是[]在声明数组时更喜欢.

所以我有几个问题.首先,为什么?我是否因使用new Array()语法而冒任何风险?是否存在我应该注意的浏览器不兼容性?第二,如果我切换到方括号语法,有没有办法声明一个数组并将其长度全部设置在一行,或者我必须做这样的事情:

var test = [];
test.length = 4;
Run Code Online (Sandbox Code Playgroud)

javascript arrays jslint

470
推荐指数
14
解决办法
60万
查看次数

使我的用户脚本等待加载其他脚本

[ 编辑:我用一个简单的例子来代替原来的,令人困惑的问题来证明这个问题.]

背景

我正在尝试编写一个将在Chrome中运行的用户脚本.这个脚本需要调用一个AlertMe()在usercript之外的JavaScript函数- 这个函数是页面的一部分,包含在服务器端动态生成的变量,所以不能在我的函数中重写这个函数. userscript.

页面上的脚本(访问页面):

<script type="text/javascript">
    function AlertMe()
    {
        alert("Function AlertMe was called!");
        // then do stuff with strings that were dynamically generated
        // on the server so that I can't easily rewrite this into the userscript
    }
</script>
Run Code Online (Sandbox Code Playgroud)

我的用户脚本(在Chrome中安装):

function tryAlert()
{
    if (typeof AlertMe == "undefined") {
        console.log('AlertMe is undefined.');
        window.setTimeout(tryAlert, 100);
    }
    else {
        AlertMe();
    }
}

tryAlert();
Run Code Online (Sandbox Code Playgroud)

问题

当我试图简单地调用该功能时,Chrome的控制台让我知道AlertMe is not defined.认为这是因为我的用户脚本在加载所有其他脚本之前运行,我曾经setTimeout …

javascript google-chrome userscripts

7
推荐指数
2
解决办法
9869
查看次数

git diff 认为文件的最后一行已在文件末尾移动?

从 Github 克隆一个 git 存储库后,如果我打开一个文件,不做任何更改并保存该文件,则输出中将显示以下内容git diff

-@import "sync.scss";
\ No newline at end of file
+@import "sync.scss";
Run Code Online (Sandbox Code Playgroud)

据我了解,\ No newline at end of file应该在没有换行符时标记文件的结尾。此差异是否意味着 git 认为最后一行已移至文件末尾之后? 有什么办法可以避免这种情况吗?我想为这个项目做出贡献,而不会在我的提交中添加垃圾空白更改。

这似乎是行尾的问题。我相当确信该文件最初是使用 Unix 行结尾保存在 Mac 上的。这与我正在使用的设置相同,所以我不确定是什么导致文档在我保存时发生更改。

git line-endings

6
推荐指数
2
解决办法
3964
查看次数

为什么这个Javascript方法不会自己调用?

我有一个带有特权方法的JavaScript对象.当这个方法完成后,我希望它自己调用(在一个小的超时后)并继续无限期地运行.不幸的是,该方法只运行两次,然后停止没有任何错误(在Chrome和IE中测试具有相同的结果).

代码如下:

function Test() {
    // ... private variables that testMethod needs to access ...
    this.testMethod = function() {
        alert("Hello, from the method.");
        setTimeout(this.testMethod, 2000);
    };
}

var myTest = new Test();
myTest.testMethod();
Run Code Online (Sandbox Code Playgroud)

我希望每两秒钟收到一次警报,但它只显示警报两次,然后停止.你可以在这里看到一个实例.知道为什么会这样吗?

javascript methods settimeout

5
推荐指数
2
解决办法
258
查看次数

当我删除一个类时,为什么我的jQuery选择器没有注意到?

我有一个包含在父类元素中的元素active,如下所示:

<div class="active">
    <div class="button"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

我有jQuery设置来处理我的buttondiv 上的点击,但只有当active父div包含该div时,如下所示:

$('.active .button').click(function(){
    alert('Button clicked!');
});
Run Code Online (Sandbox Code Playgroud)

我使用jQuery active从父级中删除类,甚至在删除类之后,当我单击按钮时仍会弹出警报.这似乎很不寻常,因为按钮不再符合选择器的标准.它发生在Chrome,Firefox和IE中,所以它似乎是故意的行为.我错过了什么吗?或者至少有一种简单的解决方法吗?

这是一个用于测试目的的简单JSFiddle示例:http://jsfiddle.net/KjuDy/.单击顶行中的框.这会弹出警报并按active预期删除该类.即使在active课程结束后单击顶行中的框,也会出现问题.我希望警报不会弹出,但它仍然会.

jquery jquery-selectors removeclass

3
推荐指数
1
解决办法
317
查看次数

为什么页面在一个URL上使用来自另一个URL的缓存页面?

背景

我是ASP.NET的新手,也是缓存概念的新手.我希望对于那些知道自己正在做的人来说,这里的问题显而易见.

使用MCMS 2002,我构建了一个template.aspx页面,该页面接收"person_id"查询字符串并相应地构建页面.我工作的学校的几个不同部门正在使用这个模板来展示教师的传记.这一切都正常工作.

问题

当我尝试缓存页面时,问题就开始发生了.当一个人在一个部门的页面上访问person_id = 16175,然后访问不同部门页面上的相同数字生物,它会加载缓存页面而不是重建它.那么问题在于它拥有所有错误的部门品牌.例如:

http://health.usf.edu/medicine/obgyn/facstaf/profiles.htm?person_id=16175 http://health.usf.edu/medicine/surgery/surgery_bios.html?person_id=16175

它与person_id相同,但URL明显不同.如果模板识别不同的URL并忽略缓存,那将是很好的.我假设问题在于这两个页面都是在后端使用相同的aspx页面构建的.这是aspx页面中的OutputCache位:

<%@ OutputCache Duration="86400" Location="Server" VaryByParam="person_id; section" VaryByCustom="CMSPosting" VaryByHeader="Referer" %>
Run Code Online (Sandbox Code Playgroud)

我想我在这里做错了什么.希望对于知道自己正在做的人来说,这是显而易见的.如果您需要更多信息,请不要犹豫.谢谢!

asp.net caching outputcache

1
推荐指数
1
解决办法
421
查看次数

在Firefox中居中一个相对定位的元素,其宽度未知

我有一个未知宽度的块级元素.此元素需要在页面上水平居中,并且position需要relative使其绝对定位的子元素显示在正确的位置.你可以在这里看到它.

据我所知,将未知宽度的元素居中的最佳方法是将其设置displaytable.在语义上,这似乎是不正确的,因为我的元素与真实表没有任何共同之处.更糟糕的是,Firefox不会将位置应用于表格,因此绝对定位的子项显示在错误的位置:

在此输入图像描述

是否有任何解决方法:

  • 不要在html中添加任何额外的元素
  • 不要使用JavaScript计算和设置元素的宽度

我想要一个纯粹的CSS修复,而且我的想法已经不多了......

html css layout

1
推荐指数
1
解决办法
452
查看次数