小编Nic*_*uin的帖子

扩展DOMDocument和DOMNode:返回对象的问题

我正在尝试扩展DOMDocument类,以便更轻松地选择XPath.我写了这段代码:

class myDOMDocument extends DOMDocument {

 function selectNodes($xpath){
   $oxpath = new DOMXPath($this);
    return $oxpath->query($xpath);
  }

  function selectSingleNode($xpath){
   return $this->selectNodes($xpath)->item(0);
  }
}
Run Code Online (Sandbox Code Playgroud)

这些方法分别返回DOMNodeList和DOMNode对象.我现在要做的是为DOMNode对象实现类似的方法.但显然如果我编写一个扩展DOMNode的类(myDOMNode),我将无法在myDOMDocument返回的节点上使用这两个额外的方法,因为它们是DOMNode(而不是myDOMNode)对象.

我是对象编程的初学者,我尝试了各种各样的想法,但它们都导致了死胡同.

任何提示?非常感谢提前.

php oop dom domdocument

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

在保留换行符的同时修剪空间

我需要修剪多行字符串中的前导和尾随空格.我用String替换方法尝试了这个正则表达式:

String.replace(/^\s+|\s+$/gm, "");
Run Code Online (Sandbox Code Playgroud)

但是,在仅包含空格的行上,换行符中的换行符将丢失.例如(^表示空格):

^^^^1234^^^^
^^^^5678^^^^
^^^^^^^
^^90^^
Run Code Online (Sandbox Code Playgroud)

输出:

1234
5678
90
Run Code Online (Sandbox Code Playgroud)

我应该使用什么正则表达式来保留第三行(空):

1234
5678

90
Run Code Online (Sandbox Code Playgroud)

javascript regex

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

在 paper.js 中使用 SVG 路径语法?

使用raphael.js库,可以使用 SVG 路径语法来描述路径(例如M98.36,214.208l2.186-1.093V210.2l-3.378,0.117l1.174,4.137L98.36,214.208z,它提供了一种非常紧凑的方式来创建形状(特别是如果您的形状是使用 Illustrator 等外部应用程序绘制的)。

我对使用paper.js感兴趣库(不是基于 SVG)感兴趣,但乍一看文档似乎表明路径是通过对象方法逐步构建的。这是一种非常不同的方法(可以说“路径构建”与“路径描述”),不太适合我的需求。

那么:有没有办法在 paper.js 中使用 SVG 路径?或者类似的“路径描述”解决方案?

参考:

javascript svg raphael paperjs

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

jQuery:确定函数是否被调用为jQuery事件处理程序(回调)

我有一个JavaScript函数,可以直接调用,作为jQuery事件的回调.

在后一种情况下,jQuery Event对象将作为参数传递.当我直接调用函数时,我还提供了一个参数(不同类型,但仍然是一个Object).

因此,我需要能够检查(在函数体内)如何调用函数,以便知道它正在处理什么类型的参数.

有一个简单的方法吗?

javascript jquery event-handling

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

Bacon.js:流和属性之间的实际区别

作为bacon.js的新手,我似乎无法理解事件流和属性之间的区别.

  • 属性是从流构建的(除了用.constant?构建的属性)
  • 他们有大多数共同的方法
  • 订阅它们的方式相同

有人可以解释这些差异以及何时使用哪些?

在下面的示例中,streamproperty具有完全相同的行为.我恐怕没有超越这个.

var stream = Bacon.sequentially(250, [1, 2, 3, 4, 5, 6, 7, 8]);
var property = stream.toProperty();

stream.onValue(function (val) {
    console.log("Stream", val);
});

property.onValue(function (val) {
    console.log("Property", val);
});
Run Code Online (Sandbox Code Playgroud)

javascript events bacon.js

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

Paper.js:无法设置符号实例的fillColor

我是paper.js的新手.

对于这个项目,我需要一个将在许多实例中使用的形状(具有不同的填充颜色),因此使用符号(而不是使用Path.clone()方法)显然更好.但是,一旦我将符号实例化为placementSymbol,似乎更改fillColor属性对渲染的形状没有影响:它仍然是符号的初始颜色.

已成功设置其他属性,例如位置或不透明度.

我的问题:如何更改符号的每个实例的填充颜色?

jsFiddle这里:http://jsfiddle.net/GlauberRocha/uTskY/(请注意,我已将所有代码放在HTML窗格中.似乎没有其他工作,可能是因为paperscript不是简单的javascript).

论文代码:

var
  path = new Path(),
  symbol = {},
  inst = [],
  colors = ["#1f8f81", "#c7c5a8", "#1b4a9f", "#d6a493", "#1a8879", "#599ce3", "#1a459c", "#b9a87a", "#365db2", "#2479d4", "#a46430", "#1b449a", "#a4632e", "#1a4297", "#3359ad", "#b1852b", "#1a8077", "#1b3849", "#ae832a", "#186cc9", "#1b8178"]

path.add(new Point(0, 56), new Point(56, 0), new Point(56, 40), new Point(0, 96));
path.fillColor = "red";
path.closed = true;
symbol = new Symbol(path);
path.remove();

for (var i = 0; i < 20; ++i) {
  inst[i] = symbol.place(); …
Run Code Online (Sandbox Code Playgroud)

javascript canvas html5-canvas paperjs

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

XSLT:由于复杂的XPath表达式导致性能不佳?

在XSLT程序中的某个时刻,我有以下内容:

<xsl:for-each select="tags/tag">
    <xsl:apply-templates select="//shows/show[film=//films/film[tag=current()/@id]/@id]|//shows/show[group=//groups/group[film=//films/film[tag=current()/@id]/@id]/@id]">
        <xsl:sort select="date" data-type="text" order="ascending"/>
        <xsl:sort select="time" data-type="text" order="ascending"/>
        </xsl:apply-templates>
</xsl:for-each>
Run Code Online (Sandbox Code Playgroud)

似乎XPath表达式//shows/show[film=//films/film[tag=current()/@id]/@id]|//shows/show[group=//groups/group[film=//films/film[tag=current()/@id]/@id]/@id]相当复杂,大大减慢了程序的执行速度(与添加引用代码之前的执行时间相比 - 当然是处理相同的数据).

你认为这是正常的,因为表达的性质相对复杂,你是否看到我如何改进它以使其表现更好?

注意:在XPath表达式中,film//films/film,group//groups/group引用不同的元素.

请参阅下面的XML输入的精简样本.

<program>
  <tags>
    <tag id="1">Tag1</tag>
    <tag id="2">Tag2</tag>
    <tag id="3">Tag3</tag>
  </tags>
  <films>
    <film id="1">
        Film1
      <tag>2</tag><!-- References: /program/tags/tag/@id=2 -->
    </film>
    <film id="2">
        Film2
      <tag>1</tag><!-- References: /program/tags/tag/@id=1 -->
    </film>
    <film id="3">
        Film3
      <tag>3</tag><!-- References: /program/tags/tag/@id=3 -->
    </film>
    <film id="4">
        Film4
      <tag>3</tag><!-- References: /program/tags/tag/@id=3 -->
    </film>
  </film>
  <groups>
    <group id="1">
      <film>3</film><!-- References: /program/films/film/@id=3 …
Run Code Online (Sandbox Code Playgroud)

xslt performance xpath

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

PHP:尽可能将String转换为Float

在PHP中,我需要编写一个函数,它接受一个字符串并尽可能将其转换返回到float,否则只返回输入字符串.

我认为这个功能会起作用.显然这种比较是错误的,但我不明白为什么.

function toNumber ($input) {
    $num = floatval($input); // Returns O for a string
    if ($num == $input) { // Not the right comparison?
        return $num;
    } else {
        return $input;
    }
}

echo(gettype(toNumber("1"))); // double
echo(gettype(toNumber("3.14159"))); // double
echo(gettype(toNumber("Coco"))); // double (expected: string)
Run Code Online (Sandbox Code Playgroud)

php type-conversion

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