【发布时间】:2021-08-15 05:03:08
【问题描述】:
我想根据在选择框中选择的内容更改表中的值。
tds 有一个data-value。我希望 val2 和 val3 除以 data-value 或根据我选择的内容保持不变。
这是我的代码:
let data1 = [
{date:'2018-01-01', device: 'iphone', site: 'google', val1:10, val2:20, val3:30},
{date:'2018-01-01', device: 'iphone', site: 'bing', val1:23, val2:12, val3:14},
{date:'2018-01-01', device: 'iphone', site: 'jeeves', val1:67, val2:78, val3:12},
{date:'2018-01-01', device: 'ipad', site: 'google', val1:10, val2:20, val3:30},
{date:'2018-01-01', device: 'ipad', site: 'bing', val1:23, val2:12, val3:14},
{date:'2018-01-01', device: 'ipad', site: 'jeeves', val1:67, val2:78, val3:12},
{date:'2018-01-02', device: 'iphone', site: 'google', val1:11, val2:22, val3:33},
{date:'2018-01-02', device: 'iphone', site: 'bing', val1:25, val2:27, val3:28},
{date:'2018-01-02', device: 'iphone', site: 'jeeves', val1:67, val2:80, val3:15},
{date:'2018-01-02', device: 'ipad', site: 'google', val1:12, val2:21, val3:31},
{date:'2018-01-02', device: 'ipad', site: 'bing', val1:26, val2:16, val3:11},
{date:'2018-01-02', device: 'ipad', site: 'jeeves', val1:65, val2:79, val3:55},
{date:'2018-01-03', device: 'iphone', site: 'google', val1:17, val2:19, val3:11},
{date:'2018-01-03', device: 'iphone', site: 'bing', val1:13, val2:15, val3:12},
{date:'2018-01-03', device: 'iphone', site: 'jeeves', val1:69, val2:79, val3:15},
{date:'2018-01-03', device: 'ipad', site: 'google', val1:17, val2:51, val3:31},
{date:'2018-01-03', device: 'ipad', site: 'bing', val1:25, val2:15, val3:17},
{date:'2018-01-03', device: 'ipad', site: 'jeeves', val1:61, val2:71, val3:15}
];
Object.keys(data1[0]).forEach(heads => $(`#my_ths`).append(`<th>${heads}</th>`));
let ths = Object.keys(data1[0]);
let nums = ['val2', 'val3'];
data1.forEach((d, idx) => {
$(`#my_tds`).append(`<tr></tr>`);
ths.forEach(th => {
$(`#my_tds > tr:last`).append(`
<td>
<div class='one ${th}_id' data-value=${d['val1']}>${d[th]}</div>
</td>
`);
});
});
const calc = (x) => {
nums.forEach(d => {
$(`.${d}_id`).each(function(){
// $(this).data('value');
let mathFunc = $(this).text() / x;
console.log(mathFunc);
$(this).html(mathFunc);
});
});
}
//not sure how to send that value as an argument because the 'this' should be the 'this' from $(`#${d}_id`).each(function()
$('#mySelect').on('change', function() {
if (this.value === 'divide') calc($(this).data('value'));
else calc(1);
});
table, td, th { border: 1px solid black; }
#mytable {
width: 100%;
border-collapse: collapse;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id='mySelect'>
<option value="" disabled selected>Select your option</option>
<option value='divide'>Divide</option>
<option value='orig'>Original</option>
</select>
<br><br>
<table id='mytable'>
<thead><tr id='my_ths'></tr></thead>
<tbody id='my_tds'></tbody>
</table>
如何发送$(this).data('value') 作为参数?我知道我在代码中所指的this 是错误的。如何在 td 中分别引用 $(this).data('value')?
【问题讨论】:
标签: javascript jquery function ecmascript-6 arguments