- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
黑线与上一行中的数字相匹配。
蓝线匹配从一行到前两行的数字 (ID# - 2)。
红线匹配从一行到前三行的数字 (ID# - 3)。
如何添加 JQuery 以在具有此类数据的表格上绘制这些线:
<section>
<article>
<h3>Number Sets</h3>
<table id="dataset">
<thead><tr><th>ID</th><th>1st #</th><th>2nd #</th><th>3rd #</th><th>4th #</th><th>5th #</th><th>6th #</th><th>Sum of</th><th>Avg of</th></tr></thead>
<tbody>
<tr class="2405"><td># 2405</td><td class="v9">9</td><td class="v17">17</td><td class="v24">24</td><td class="v34">34</td><td class="v43">43</td><td class="v49">49</td><td class="v176">176</td><td class="v29.33">29.33</td></tr>
<tr class="2404"><td># 2404</td><td class="v22">22</td><td class="v26">26</td><td class="v31">31</td><td class="v32">32</td><td class="v43">43</td><td class="v45">45</td><td class="v198">198</td><td class="v33.00">33.00</td></tr>
<tr class="2403"><td># 2403</td><td class="v7">7</td><td class="v11">11</td><td class="v18">18</td><td class="v44">44</td><td class="v53">53</td><td class="v54">54</td><td class="v187">187</td><td class="v31.17">31.17</td></tr>
<tr class="2402"><td># 2402</td><td class="v14">14</td><td class="v15">15</td><td class="v27">27</td><td class="v37">37</td><td class="v44">44</td><td class="v47">47</td><td class="v184">184</td><td class="v30.67">30.67</td></tr>
<tr class="2401"><td># 2401</td><td class="v37">37</td><td class="v54">54</td><td class="v31">31</td><td class="v6">6</td><td class="v26">26</td><td class="v15">15</td><td class="v169">169</td><td class="v28.17">28.17</td></tr>
<tr class="2400"><td># 2400</td><td class="v39">39</td><td class="v35">35</td><td class="v38">38</td><td class="v41">41</td><td class="v22">22</td><td class="v34">34</td><td class="v209">209</td><td class="v34.83">34.83</td></tr>
<tr class="2399"><td># 2399</td><td class="v9">9</td><td class="v12">12</td><td class="v18">18</td><td class="v31">31</td><td class="v34">34</td><td class="v51">51</td><td class="v155">155</td><td class="v25.83">25.83</td></tr>
<tr class="2398"><td># 2398</td><td class="v1">1</td><td class="v29">29</td><td class="v14">14</td><td class="v46">46</td><td class="v38">38</td><td class="v26">26</td><td class="v154">154</td><td class="v25.67">25.67</td></tr>
<tr class="2397"><td># 2397</td><td class="v35">35</td><td class="v6">6</td><td class="v8">8</td><td class="v30">30</td><td class="v47">47</td><td class="v42">42</td><td class="v168">168</td><td class="v28.00">28.00</td></tr>
<tr class="2396"><td># 2396</td><td class="v45">45</td><td class="v25">25</td><td class="v4">4</td><td class="v33">33</td><td class="v49">49</td><td class="v48">48</td><td class="v204">204</td><td class="v34.00">34.00</td></tr>
<tr class="2395"><td># 2395</td><td class="v11">11</td><td class="v9">9</td><td class="v37">37</td><td class="v44">44</td><td class="v25">25</td><td class="v17">17</td><td class="v143">143</td><td class="v23.83">23.83</td></tr>
<tr class="2394"><td># 2394</td><td class="v48">48</td><td class="v12">12</td><td class="v7">7</td><td class="v14">14</td><td class="v41">41</td><td class="v21">21</td><td class="v143">143</td><td class="v23.83">23.83</td></tr>
<tr class="2393"><td># 2393</td><td class="v2">2</td><td class="v14">14</td><td class="v9">9</td><td class="v35">35</td><td class="v22">22</td><td class="v36">36</td><td class="v118">118</td><td class="v19.67">19.67</td></tr>
<tr class="2392"><td># 2392</td><td class="v37">37</td><td class="v49">49</td><td class="v36">36</td><td class="v52">52</td><td class="v16">16</td><td class="v45">45</td><td class="v235">235</td><td class="v39.17">39.17</td></tr>
<tr class="2391"><td># 2391</td><td class="v14">14</td><td class="v36">36</td><td class="v2">2</td><td class="v6">6</td><td class="v50">50</td><td class="v26">26</td><td class="v134">134</td><td class="v22.33">22.33</td></tr>
</tbody>
</table>
</article>
</section>
假设我有链接到页面的 JQuery 库,什么 JQuery 代码会抓取该行,分析它匹配的内容,然后为这两个数字画一条线?
我找到了这篇关于如何使用 JQuery 和 .js 制作线条的文章,但我不知道足够的 .js 来适合我的应用程序。 http://www.monkeyandcrow.com/blog/drawing_lines_with_css3/
我的想法是我可以更改下面代码中的 div、page 和 line 以适合我的实际表格和行。
var line = $('<div>')
.appendTo('#page')
.addClass('line')
来自此代码
function createLine(x1,y1, x2,y2){
var length = Math.sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2));
var angle = Math.atan2(y2 - y1, x2 - x1) * 180 / Math.PI;
var transform = 'rotate('+angle+'deg)';
var line = $('<div>')
.appendTo('#page')
.addClass('line')
.css({
'position': 'absolute',
'transform': transform
})
.width(length)
.offset({left: x1, top: y1});
return line;
}
但是我不确定他们在做什么。我确实将变量特定类名添加到 <tr>
和<td>
来帮助这个。我不知道也许不需要它们。
有什么想法需要更改什么才能使其自动在表格单元格上生成线条?
最佳答案
我想我最终为你编写了代码,哈哈...这是一个有趣的谜题:D
在 this demo ,您可以将前几行修改为选项 - 定位表、表包装器、起始列和结束列,并且 distance
包含 css 类名称。
将所有行添加到表中后,看起来就像受到了意大利面怪物的攻击。因此,我在底部添加了一些额外的代码,以允许将鼠标悬停在匹配的行上。
CSS
article {
position: relative;
}
table, th, td {
border-collapsed: collapse;
border: #000 1px solid;
padding: 3px;
}
.line {
transform-origin: 0 100%;
height: 3px;
border: 0;
}
.blue {
background-color: blue;
}
.red {
background-color: red;
}
.black {
background-color: black;
}
脚本
var $table = $('table'),
$attachLinesTo = $('#dataset-wrap'),
startColumn = 1,
endColumn = 6,
// black = 1 line, blue = 2, red = 3+
distance = [ 'black', 'blue', 'red' ],
// adjust line position (pixels)
xAdj = 0,
yAdj = 0;
// don't modify anything below
var $rows = $table.children('tbody').children('tr');
function createLine(x1, y1, x2, y2, colorClass) {
var length = Math.sqrt( ( x1 - x2 ) * ( x1 - x2 ) + ( y1 - y2 ) * ( y1 - y2 ) ),
angle = Math.atan2( y2 - y1, x2 - x1 ) * 180 / Math.PI;
return $( '<div>' )
.appendTo( $attachLinesTo )
.addClass( 'line ' + colorClass )
.css({
position : 'absolute',
transform : 'rotate(' + angle + 'deg)'
})
.width( length )
.offset({
left : x1,
top : y1
});
}
function getValues() {
var indx, row, col,
data = [],
rowsLen = $rows.length;
for ( indx = 0; indx < rowsLen; indx++ ) {
row = [];
for ( col = startColumn; col <= endColumn; col++ ) {
// save cell contents for row
row.push( parseInt( $rows.eq( indx ).children().eq( col ).text(), 10 ) );
}
// save row array
data.push( row );
}
return data;
}
function findDuplicates() {
var indx, row, rowArry, col, val, index,
array = getValues(),
len = array.length,
xref = {};
for ( row = 0; row < len - 1; row++ ) {
rowArry = array[ row ];
for ( col = 0; col < rowArry.length; col++ ) {
val = rowArry[ col ];
if ( $.isEmptyObject( xref[ val ] ) ) {
// each value in the table gets a cross reference with a row & col index
// (col starts from "startColumn" value, not zero)
xref[ val ] = { row: [], col: [] };
}
for ( indx = row; indx < len; indx++ ) {
// indexOf (array) not supported in IE8... but neither are css3 transforms
index = array[ indx ].indexOf( val );
if ( index > -1 ) {
// don't add duplicates in cross reference
// *** NOTE *** this will cause issues if two of the same value is in the same row
if ( xref[ val ].row.indexOf( indx ) < 0 ) {
xref[ val ].row.push( indx );
xref[ val ].col.push( index );
}
}
}
}
}
return xref;
}
function getCoords( row, col ) {
var $cell = $rows.eq( row ).children().eq( col ),
width = $cell.width(),
height = $cell.height(),
pos = $cell.offset();
// return x & y pixel coordinates from center of table cell
return {
x: pos.left + width/2 + xAdj,
y: pos.top + height/2 + yAdj
};
}
function draw() {
var val, value, indx, len, pos, x, y, color,
maxDist = distance.length - 1,
data = findDuplicates();
for ( val in data ) {
if ( data[ val ].row ) {
value = data[ val ];
len = value.row.length - 1;
// ignore if value is unique
if ( len > 0 ) {
for ( indx = 0; indx < len; indx++ ) {
// get line starting position
pos = getCoords( value.row[ indx ], value.col[ indx ] + startColumn );
x = pos.x;
y = pos.y;
// get line ending position
pos = getCoords( value.row[ indx + 1 ], value.col[ indx + 1 ] + startColumn );
// adjust colors... add 1 to index so distance array doesn't need to have "" at the zero index
color = distance[ Math.abs( value.row[ indx ] - value.row[ indx + 1 ] + 1 ) ] || distance[ maxDist ];
// draw line - add color + cell value for hovering code
createLine( x, y, pos.x, pos.y, color + ' ' + color + val );
}
}
}
}
}
// Initialize draw
draw();
var $lines = $('.line');
// hover over line to isolate it
$('#dataset-wrap').on('mouseover mouseleave', '.line', function(e){
if ( e.type === 'mouseover' ) {
// hide all lines except current
$lines.not(this).hide();
// find number in class name (e.g. get "9" from "red9")
var number = this.className.match( /[a-z]+(\d+)/ ),
// make regular expression to match word + number ( word could be "blue", "black" or "red" from distance value )
// add \b at end to prevent matching "red26" when we only wanted "red2"
regex = new RegExp( '[a-z]+' + ( number ? number[1] : '' ) + '\\b' );
// find matching lines & show
$lines.filter(function(){
return regex.test( this.className );
}).show();
} else {
$lines.show();
}
});
<小时/>
更新:我忘记提及的一个问题,但我确实在代码中添加了注释,即如果一行两次包含相同的数字,则第二个值将被忽略......但这看起来像是一种排序彩票比较,所以我认为这不会是一个问题。
关于jquery - 尝试使用 JQuery 在表数据上绘制线条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33988943/
在带有 jQuery 的 CoffeeScript 中,以下语句有什么区别吗? jQuery ($) -> jQuery -> $ - > 最佳答案 第一个与其他两个不同,就像在纯 JavaScr
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭13 年前。 Improve th
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
这个问题可能听起来很愚蠢,但请耐心等待,因为我完全是初学者。我下载了两个 jQuery 版本,开发版本和生产版本。我想知道作为学习 jQuery 的初学者,什么更适合我。 最佳答案 如果您对 jQue
The documentation说要使用 1.6.4,但我们现在已经升级到 1.7.2。 我可以在 jQuery Mobile 中使用最新版本的 jQuery 吗? 最佳答案 您当然可以,但如果您想
我在这里看到这个不错的 jquery 插件:prettyphoto jquery lightbox有没有办法只用一个简单的jquery来实现这样的效果。 我只需要弹出和内联内容。你的回复有很大帮助。
很明显我正在尝试做一些 jQuery 不喜欢的事情。 我正在使用 javascript 上传图片。每次上传图片时,我都希望它可见,并附加一个有效的删除脚本。显示工作正常,删除则不然,因为当我用 fir
这两个哪个是正确的? jQuery('someclass').click(function() { alert("I've been clicked!"); }); 或 jQuery('somec
我正在寻找一个具有以下格式的插件 if (jQuery)(function ($) { -- plugin code -- })(jQuery); 我明白 (function ($)
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭10 年前。 Improv
我知道这个问题已经被问过几次了,但想知道您是否可以帮助我解决这个问题。 背景:我尝试创建一个使用 Ajax 提交的表单(jQuery 表单提交)。我已经工作得很好,然后我想在表单上得到验证。我可以使用
我正在使用无处不在的jquery validate plugin用于表单验证。它支持使用metadata plugin用于向表单元素添加验证规则。 我正在使用此功能。当验证查找这些规则时,它会对元素进
我更喜欢为我一直在开发的网络社区添加实用的视觉效果,但随着事情开始堆积,我担心加载时间。 拥有用户真的更快吗加载(希望是缓存的)副本来自 Google 存储库的 jquery? 是否使用 jQuery
这个问题已经有答案了: Slide right to left? (17 个回答) 已关闭 9 年前。 你能告诉我有没有办法在 jQuery 中左右滑动而不使用 jQuery UI 和 jQuery
我如何找出最适合某种情况的方法?任何人都可以提供一些示例来了解功能和性能方面的差异吗? 最佳答案 XMLHttpRequest 是原始浏览器对象,jQuery 将其包装成一种更有用和简化的形式以及跨浏
运行时 php bin/console oro:assets:build ,我有 11 个这样的错误: ERROR in ../node_modules/jquery-form/src/jquery.
我试图找到 jQuery.ajax() 在源代码中的定义位置。但是,使用 grep 似乎不起作用。 在哪里? 谢谢。 > grep jQuery.ajax src/* src/ajax.js:// B
$.fn.sortByDepth = function() { var ar = []; var result = $([]); $(this).each(function()
我的页面上有多个图像。为了检测损坏的图像,我使用了在 SO 上找到的这个。 $('.imgRot').one('error',function(){ $(this).attr('src','b
我在理解 $ 符号作为 jQuery 函数的别名时遇到了一些麻烦,尤其是在插件中。你能解释一下 jQuery 如何实现这种别名:它如何定义 '$' 作为 jQuery 函数的别名?这是第一个问题。 其
我是一名优秀的程序员,十分优秀!