小编ren*_*sis的帖子

在函数中使用默认参数

我对PHP函数的默认值感到困惑.说我有这样的功能:

function foo($blah, $x = "some value", $y = "some other value") {
    // code here!
}
Run Code Online (Sandbox Code Playgroud)

如果我想使用$ x的默认参数并为$ y设置不同的参数,该怎么办?

我一直在尝试不同的方式,我只是变得更加困惑.例如,我尝试了这两个:

foo("blah", null, "test");
foo("blah", "", "test");
Run Code Online (Sandbox Code Playgroud)

但是这两个都不会导致$ x的正确默认参数.我也尝试用变量名设置它.

foo("blah", $x, $y = "test");   
Run Code Online (Sandbox Code Playgroud)

我完全期望这样的事情能发挥作用.但它根本无法实现.似乎无论我做什么,每次调用函数时,我都必须最终输入默认参数.而且我必须遗漏一些明显的东西.

php arguments default

166
推荐指数
6
解决办法
14万
查看次数

JavaScript和SVG:如何增加onClick事件的可点击区域?

我的脚本在屏幕上以3的笔划宽度绘制线条.线条的大小是理想的(视觉上),但它们不是很容易点击.

作为一个粗略的例子:

<html>
<head>
<script>
function selectStrand(evt) {
    current_id = evt.target.getAttributeNS(null, "id");

    document.getElementById('main').innerHTML = current_id;
}
</script>
</head>

<body>
Selected line: <span id="main"></span>

<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="100%" height="100%" preserveAspectRatio="xMinYMin meet" viewBox="0 0 1000 1000">
    <g id="buffer" transform="translate(10,0)">
      <line id="blue-blue" x1="50" y1="50" x2="500" y2="50" style="stroke:blue; stroke-width: 4;" stroke-linecap="round" onclick="selectStrand(evt)"/>
      <line id="blue-orange" x1="50" y1="70" x2="500" y2="70" style="stroke:orange; stroke-width: 4;" stroke-linecap="round" onclick="selectStrand(evt)"/>
      <line id="blue-green" x1="50" y1="90" x2="500" y2="90" style="stroke:green; stroke-width: 4;" stroke-linecap="round" onclick="selectStrand(evt)"/>
      <line id="blue-brown" x1="50" y1="110" x2="500" y2="110" style="stroke:brown; stroke-width: …
Run Code Online (Sandbox Code Playgroud)

javascript user-interface svg

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

缩放事件监听器之前的Javascript OpenLayers

我正在尝试将OpenLayers设置为在缩放开始之前不显示矢量图层,并在缩放结束后重新显示它.我有缩放结束部分已经建立如下:

map = new OpenLayers.Map('map_element', { eventListeners: { "zoomend": mapEvent}});

function mapEvent(event) {
    if(event.type == "zoomend") {
        hide_vector_layer();
        }
}
Run Code Online (Sandbox Code Playgroud)

但我没有看到任何类型的事件监听器开始放大文档.有一个"movestart",涵盖了移动,平移和缩放.不幸的是,我不能使用"movestart",因为我不希望图层在平移期间消失.你会认为会有一个"zoomstart",因为有一个"zoomend".

我试图这样做的原因是因为我不喜欢当使用谷歌地图作为基础层时矢量图层以不同的速率缩放.它看起来不对,看起来所有功能都不准确,即使它们在缩放完成后落在正确的位置.

有什么建议?

javascript google-maps zooming openlayers

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

为什么单独依赖范围链并避免在Javascript中显式引用头对象是有益的?

我一直在读Cody Lindley的这本书"Javascript Enlightenment".在第82页上,他指出:"显式(例如window.alert()vs alert())在性能方面要花费更多.如果单独依赖范围链并避免显式引用头对象,则速度会更快你知道你想要的属性包含在全局范围内."

我有点好奇为什么会这样.我认为这是相反的,因为Javascript解释器可以跳过检查范围并直接找到它.我只是没有看到没有指定某些东西的确切地址是多么有益.

我的意思是,我知道我不打算输入window.whatever()每次我想使用全局范围中包含的东西时,我认为没有指定它会更快.只是不确定为什么.

只是其中一个"想知道"的事情.

javascript scope global

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