小编Chr*_*s B的帖子

如何阻止激烈的Javascript循环冻结浏览器

我正在使用Javascript解析一个包含大约3,500个元素的XML文件.我正在使用jQuery"each"函数,但我可以使用任何形式的循环.
问题是浏览器在循环执行时冻结了几秒钟.在不降低代码速度的情况下停止冻结浏览器的最佳方法是什么?

$(xmlDoc).find("Object").each(function() {
    //Processing here
});
Run Code Online (Sandbox Code Playgroud)

javascript performance jquery loops

56
推荐指数
3
解决办法
5万
查看次数

PHP:删除文件夹的最简单方法(包括其内容)

rmdir()如果文件夹包含任何文件,则该函数将失败.我可以循环遍历目录中的所有文件,如下所示:

foreach (scandir($dir) as $item) {
    if ($item == '.' || $item == '..') continue;
    unlink($dir.DIRECTORY_SEPARATOR.$item);
}
rmdir($dir);
Run Code Online (Sandbox Code Playgroud)

有没有办法一次性删除它?

php file-io delete-directory

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

地图聚类算法

我目前的代码很快,但我需要更快,所以我们可以容纳更多的标记.有什么建议?

笔记:

  • 当SQL语句按标记名称排序时,代码运行得最快 - 它本身在聚类标记方面做了非常局部的工作(同一位置的标记名称通常但不总是相似).
  • 我无法对标记进行预聚类,因为它们可以动态搜索和过滤.
  • 我已经尝试过基于网格的聚类 - 但结果往往不是很好.
  • 我知道墨卡托投影上的星团略微倾斜.
  • 我对商业集群服务不感兴趣.

代码:

$singleMarkers = array();
$clusterMarkers = array();

while (count($markers)) {
    $marker  = array_pop($markers);
    $cluster = array();

    // Compare marker against all remaining markers.
    foreach ($markers as $key => $compareMarker) {
        // This function returns the distance between two markers, at a defined zoom level.
        $pixels = pixelDistance($marker['lat'], $marker['lng'], $compareMarker['lat'], $compareMarker['lng'], $zoomLevel);
        // If two markers are closer than defined distance, remove compareMarker from array and add to cluster.
        if …
Run Code Online (Sandbox Code Playgroud)

php algorithm performance google-maps cluster-analysis

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

如何创建节目全屏按钮以将我的Google地图页面切换为全屏?

嗨,大家好我在我的页面的一部分上集成了谷歌地图,我想创建一个切换按钮,在全屏和正常大小之间切换地图.因此,当您单击它时 - 地图会扩展以填充整个浏览器屏幕并再次单击它,它将恢复到页面上的原始大小.我该怎么办?

javascript google-maps

13
推荐指数
2
解决办法
3万
查看次数

动态加载Google Maps api

我试图动态加载谷歌地图API.我正在使用以下代码:

var head= document.getElementsByTagName('head')[0];
var script= document.createElement('script');
script.type= 'text/javascript';
script.src= 'http://www.google.com/jsapi?key=<MY_KEY>;
head.appendChild(script);
Run Code Online (Sandbox Code Playgroud)

但在尝试创建地图时

map = new GMap2(document.getElementById("map"));
Run Code Online (Sandbox Code Playgroud)

要么

map = new google.maps.Map2(document.getElementById("map"));
Run Code Online (Sandbox Code Playgroud)

我收到了谷歌(或GMap2)未定义的错误.

google-maps dynamic

8
推荐指数
2
解决办法
1万
查看次数

动态添加监听器到谷歌地图标记

我正在开发一个页面,该页面使用Javascript httpObject获取代码并使用它来更新页面上的两个元素 - 谷歌地图和列出标记指向的东西的DIV.

这一点工作得很好.问题在于,当我创建标记时,我通过for循环执行此操作,并在每个循环中向标记添加侦听器.然后,当我测试页面时,我发现每个标记都会发生同样的事情.

将鼠标悬停在标记上应更改DIV相应位的边框颜色.相反,每个标记都会更改最后一位的边框.似乎每次添加监听器时,我都会覆盖先前添加的标记的监听器.

我知道,即使您在Javascript中创建新标记,Google Maps API也会保留标记的标识.我不知道如何解决它 - 我尝试在循环外创建一个数组,并改变

var newMarker = new GMarker(newLatLng);
Run Code Online (Sandbox Code Playgroud)

with newMarker [count] = new GMarker(newLatLng);

但它仍然无效.

帮助我,StackOverflow.你是我唯一的希望.:)

编辑:多一点代码

for (count=0;count<=LatArray.length;count++)
{
  thisLat = LatArray[count];
  thisLong = LongArray[count];
  thisHTML = HTMLArray[count];
  newLatLng = new GLatLng(thisLat, thisLong, true);

  if (mapBounds.containsLatLng(newLatLng))
  {
      //alert(count);
      var  dinnerNumber = "dinner_"+count;
      newMarkers[count] = new GMarker(newLatLng); 
      map.addOverlay(newMarkers[count]);
      GEvent.addListener(newMarkers[count],'mouseover',function(){document.getElementById(dinnerNumber).style.borderColor = '#000000';
  });
}// for
Run Code Online (Sandbox Code Playgroud)

javascript google-maps listeners

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

Javascript - 显示和隐藏大量列表项的最快方式

当用户在Google Map周围平移时,会更新当前可见标记的列表.此列表最多包含1000个项目,当一次显示或隐藏数百个li时,它会减慢速度.它不到半秒钟,但它变得很烦人.

数组(newLiList)包含现在应该可见的项目.另一个数组(currentLiList)具有先前可见的项目.两个数组都包含li的id作为索引.

for (var i in newLiList) {
    if (currentLiList[i] != true) {
        $("ul#theList li#"+i).show();
    }
}
for (var i in currentLiList) {
    if (newLiList[i] != true) {
        $("ul#theList li#"+i).hide();
    }
}
Run Code Online (Sandbox Code Playgroud)

有更快的方法吗?

javascript performance jquery google-maps

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

Javascript:如何从类的一个函数中的函数访问类属性

在我的某个类的某个函数中,我需要setInterval用来分解代码的执行.但是,在setInterval函数中,"this"不再引用类"myObject".如何从setInterval函数中访问变量"name" ?

function myObject() {
    this.name = "the name";
}

myObject.prototype.getName = function() {
    return this.name;
}

myObject.prototype.test = function() {
    // this works
    alert(this.name);

    var intervalId = setInterval(function() {
        // this does not work
        alert(this.name);

        clearInterval(intervalId);
    },0);
}
Run Code Online (Sandbox Code Playgroud)

javascript oop class-design

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

CSS - 如何删除锚定图像之间的空白

我有两个相互重叠的锚定图像,用换行符分隔.我希望图像直接位于彼此之上,但在Firefox中,图像之间存在差距.它适用于IE7.我能够解决这个问题的唯一方法是改变行高(我不想这样做).

<a href="image.jpg">
    <img height="75" width="75" src="image.jpg" />
</a>
<br/>
<a href="image2.jpg">
    <img height="75" width="75" src="image2.jpg" />
</a>
Run Code Online (Sandbox Code Playgroud)

html css anchor image

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

Javascript坚持认为它没有定义,它完全是

老实说,我不习惯写JS,更糟糕的是我正在使用谷歌地图API,虽然记录良好,但它是一只熊.所以,我编写了一个允许用户从链接放大地图的功能.但是解释器坚持认为我的功能在我调用时没有定义.该功能是"zoomTo",它出现在以下怪物脚本中.

function load() {
    if (GBrowserIsCompatible()) {
        var gmarkers = [];
        var htmls = [];
        var i = 0;
        // Read the data
        //++++++++++++++++
        GDownloadUrl("/assets/data/nolag.xml", function(data) {
                var xml = GXml.parse(data);
                var markers = 

        xml.documentElement.getElementsByTagName("marker");

        // Draw icons
        for (var i = 0; i < markers.length; i++) {
            var locoName = markers[i].getAttribute("locoName");
            var speed = markers[i].getAttribute("speed");
            var ip = markers[i].getAttribute("ip");
            var date = markers[i].getAttribute("captureTime");
            var lat = markers[i].getAttribute("lat");
            var lng = markers[i].getAttribute("lng");
            var location = markers[i].getAttribute("location");
            var heading = markers[i].getAttribute("heading"); …
Run Code Online (Sandbox Code Playgroud)

javascript google-maps

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

如何在Perl中使用数组作为哈希值?

好的,所以这是我正在尝试创建的整个结构.我需要创建一个可以用作哈希值的匿名数组.这适用于我的程序:

$result = {
    count, 2,
    elementList, [
        {name => "John Doe", age => 23},
        {name => "Jane Doe", age => 24}
    ]
};
Run Code Online (Sandbox Code Playgroud)

我试图用这样的代码创建完全相同的东西.这有效:

my @elements = [
     {name => "John Doe", age => 23},
     {name => "Jane Doe", age => 24}
];

$result = {
    count, 2,
    elementList, @elements
};
Run Code Online (Sandbox Code Playgroud)

但这不起作用:

my @elements;
push(@elements, {name => "John Doe", age => 23});
push(@elements, {name => "Jane Doe", age => 24});

$result = {
    count, 2,
    elementList, @elements
};
Run Code Online (Sandbox Code Playgroud)

arrays perl

0
推荐指数
2
解决办法
652
查看次数