我正在使用Javascript解析一个包含大约3,500个元素的XML文件.我正在使用jQuery"each"函数,但我可以使用任何形式的循环.
问题是浏览器在循环执行时冻结了几秒钟.在不降低代码速度的情况下停止冻结浏览器的最佳方法是什么?
$(xmlDoc).find("Object").each(function() {
//Processing here
});
Run Code Online (Sandbox Code Playgroud) rmdir()
如果文件夹包含任何文件,则该函数将失败.我可以循环遍历目录中的所有文件,如下所示:
foreach (scandir($dir) as $item) {
if ($item == '.' || $item == '..') continue;
unlink($dir.DIRECTORY_SEPARATOR.$item);
}
rmdir($dir);
Run Code Online (Sandbox Code Playgroud)
有没有办法一次性删除它?
我目前的代码很快,但我需要更快,所以我们可以容纳更多的标记.有什么建议?
笔记:
代码:
$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) 嗨,大家好我在我的页面的一部分上集成了谷歌地图,我想创建一个切换按钮,在全屏和正常大小之间切换地图.因此,当您单击它时 - 地图会扩展以填充整个浏览器屏幕并再次单击它,它将恢复到页面上的原始大小.我该怎么办?
我试图动态加载谷歌地图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)未定义的错误.
我正在开发一个页面,该页面使用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) 当用户在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)
有更快的方法吗?
在我的某个类的某个函数中,我需要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) 我有两个相互重叠的锚定图像,用换行符分隔.我希望图像直接位于彼此之上,但在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) 老实说,我不习惯写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) 好的,所以这是我正在尝试创建的整个结构.我需要创建一个可以用作哈希值的匿名数组.这适用于我的程序:
$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) google-maps ×6
javascript ×6
performance ×3
jquery ×2
php ×2
algorithm ×1
anchor ×1
arrays ×1
class-design ×1
css ×1
dynamic ×1
file-io ×1
html ×1
image ×1
listeners ×1
loops ×1
oop ×1
perl ×1