小编kok*_*oko的帖子

在js中找到多边形的中心点

我找到了一个很好的例子,如何找到多边形的中心点(这里是JS):

- >请参阅此jsfiddle示例

所以,用这个多边形

var polygon = [
     {'x':770, 'y':400},
     {'x':529, 'y':643},
     {'x':320, 'y':494},
     {'x':424, 'y':381},
     {'x':459, 'y':369}
];
Run Code Online (Sandbox Code Playgroud)

我应该找到这样的中心点:

var con = new Contour();
    con.pts = polygon;
    document.write(con.centroid)
Run Code Online (Sandbox Code Playgroud)

不过con.centroidundefined.

我究竟做错了什么?提前致谢!

javascript prototype canvas

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

HTML修改后无法恢复选择,即使它是相同的HTML

我正在尝试存储一个contentEditable元素的选择,并在以后恢复它.

我想观察paste事件并存储以前的HTML,清除html然后手动插入粘贴的文本,在所选位置进行一些更改.

看一下这个例子:jsfiddle.net/gEhjZ

当您选择文本的一部分时,点击store,再次删除选择并点击restore,它按预期工作.

但是当你第一次点击时store,然后通过点击替换完全相同的HTML overwrite html,然后尝试restore,没有任何反应.

我认为使用.cloneRange()会有所作为,但事实并非如此.即使是object($.extend(true, {}, oldRange))的深层副本也无法解决问题.只要我覆盖HTML,选择对象sel也会被更改.对我来说,更改选择上下文会擦除范围是有道理的,但我正在尝试将其恢复为完全相同的HTML.

我知道我可以使用rangy,但我真的不想为这个小功能使用一个巨大的库.我错过了什么?任何帮助将非常感激!

注意:只有Firefox/Chrome,因此不需要使用crossbrowser-hacks.

更新:

@Tim Down的答案在使用div时有效,但我实际上是在使用iframe.当我做出这个例子时,我认为它没有任何区别.

现在,当我尝试恢复iframe的正文时,我收到以下错误:TypeError: Value does not implement interface Node.在以下行中preSelectionRange.selectNodeContents(containerEl);.我没有从谷歌搜索获得太多.我试图包装正文的内容并恢复包装的html,但我得到了同样的错误.

jsfiddle在这种情况下不工作,因为它使用iframe来显示结果本身,所以我在这里举了一个例子:snipt.org/AJad3

并且没有包装:snipt.org/AJaf0

更新2:editable.get(0)当然, 我认为我必须使用它.但现在startendiframe的选择是0看snipt.org/AJah2

javascript jquery range selection contenteditable

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

用JavaScript替换正则表达式的字符串

一个特殊的正则表达式现在正在困扰我.我只想在字符串中替换range = 100

var string = '...commonstringblabla<b>&range=100&</b>stringandsoon...';
Run Code Online (Sandbox Code Playgroud)

...commonstringblabla<b>&range=400&</b>stringandsoon...
Run Code Online (Sandbox Code Playgroud)

我成功地匹配了"range = 100"-part

alert(string.match(/ range = 100 /));

但是当我尝试更换它时,

string.replace(/ range = 100 /,'range = 400');

什么都没发生.该字符串仍然具有范围= 100.我怎样才能使它工作?

javascript regex replace match

4
推荐指数
2
解决办法
2572
查看次数

如何规范雷达图的统计数据

我正在使用raphaelJS绘制一个"雷达图表"来显示统计数据.对于每个轴,它应接受0到10之间的值.

例如,多边形的值,其中心点位于图表的中心[10,10,10,10,10].简单...

但是,可能会发生数据如下所示:

[26, 14, 48, 18, 1],
[ 3, 14,  8,  9, 5],
[10,  6,  4, 16, 3]
Run Code Online (Sandbox Code Playgroud)

这导致了这一点(显示多边形的中心点位于图表的左下方):

雷达规模

如果我根据其最大值(在这种情况下为48)对数据进行标准化,则所有其他中心点将太靠近图表的中心,并且其信息值将大约为0.


相同的数据根据​​其最大值进行标准化:

[5.42, 2.92, 10,   3.75, 0.21],
[0.63, 2.92, 1.67, 1.88, 1.04],
[2.08, 1.25, 0.83, 3.34, 0.63]
Run Code Online (Sandbox Code Playgroud)

雷达归一化

所以现在所有其他中心点都聚集在图表的中心,并且已经失去了所有的解释力......如果有超过3个中心点,它们很可能会相互重叠.

中心

我正在考虑一种显示每个多边形的相对方式,而不会在每个多边形之间失去太多关系,如果可能的话......

任何想法如何做到这一点,或者可能是另一种方法如何规范化?

statistics charts data-visualization scale raphael

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

键盘滚动在webkit中的焦点div上

我有这个小jquery插件.垂直可滚动div中有一些图像.我可以点击这个div并使用箭头键滚动它.

如果您看一下这个例子,您可以看到我想观察是否按下了向右/向左箭头键,如果是,请跳转到下一个图像.在Firefox和IE中,正在调用keyup()事件,而在safari和chrome中则不然.

我在webkit浏览器中遇到了几个奇怪的滚动和焦点行为,但我不知道为什么没有触发keyup()事件.如果您有任何想法,请告诉我.

javascript jquery webkit

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