使用 html 按钮更改 javascript 变量
Change javascript variable with html button
我正在网站中实施 IGV 基因组浏览器。
我想 link 一个带有染色体位置的 table 到基因组浏览器,所以当用户点击一个位置时,基因组浏览器会自动更改到那个位置。
现在,我将基因组浏览器代码放在一个单独的 javascript 文件中,该文件使用按钮的值。
// Construct genome browser
document.addEventListener("DOMContentLoaded", function () {
// Obtain position
var position = $('#ins').val();
// Use the position
var options = {locus: position, ...};
var igvDiv = document.getElementById("igvDiv");
igv.createBrowser(igvDiv, options)
.then(function (browser) {
console.log("Created IGV browser");
})
};
以及 html 中带有按钮的 table。
<table class='results-table'>
<tr>
<th class='text text--bold'>Chromosome</th>
<th class='text text--bold'>Start</th>
<th class='text text--bold'>End</th>
<th class='text text--bold'>Genome Browser</th>
</tr>
<tr>
<td class='text'>chr1</td>
<td class='text'>0</td>
<td class='text'>100</td>
<td><button class='editbtn' value='chr1:0-100' id='ins1'>chr1:0-100</button></td>
</tr>
<tr>
<td class='text'>chr2</td>
<td class='text'>200</td>
<td class='text'>400</td>
<td><button class='editbtn' value='chr2:200-400' id='ins2'>chr2:200-400</button></td>
</tr>
</table>
有了这个,浏览器获得了第一个位置,但是当我点击按钮时它并没有改变。
我想我需要某种 onClick() 操作,但我不知道如何更改 javascript 脚本。
如有任何帮助,我们将不胜感激。
谢谢!
朱莉娅
编辑:
我添加了更多 javascript 代码,因为我认为我无法正确说明我的问题。并且还修改了按钮的 id,使它们不同。
问题是如何根据单击的按钮在 javascript 中使用不同的 ID。
您可以在点击事件中访问 ID 和值:
// Construct genome browser
document.querySelector('table.results-table').addEventListener('click', function ({ target }) {
if (!target.id) return;
const id = target.id;
const position = target.value;
console.log(id);
console.log(position);
});
<table class='results-table'>
<tr>
<th class='text text--bold'>Chromosome</th>
<th class='text text--bold'>Start</th>
<th class='text text--bold'>End</th>
<th class='text text--bold'>Genome Browser</th>
</tr>
<tr>
<td class='text'>chr1</td>
<td class='text'>0</td>
<td class='text'>100</td>
<td><button class='editbtn' value='chr1:0-100' id='ins1'>chr1:0-100</button></td>
</tr>
<tr>
<td class='text'>chr2</td>
<td class='text'>200</td>
<td class='text'>400</td>
<td><button class='editbtn' value='chr2:200-400' id='ins2'>chr2:200-400</button></td>
</tr>
</table>
您可以更改一些内容。我从你的按钮中删除了 id,因为你已经有了传递事件的上下文。而不是按钮中的值,我建议您使用数据属性。例如数据值。
function check(e) {
console.log(e.getAttribute('data-value'))
}
<button class='editbtn' onclick="check(this)" data-value='chr2:200-400' >chr2:200-400</button>
<button class='editbtn' onclick="check(this)" data-value='chr1:0-100' >chr1:0-100</button>
我正在网站中实施 IGV 基因组浏览器。 我想 link 一个带有染色体位置的 table 到基因组浏览器,所以当用户点击一个位置时,基因组浏览器会自动更改到那个位置。
现在,我将基因组浏览器代码放在一个单独的 javascript 文件中,该文件使用按钮的值。
// Construct genome browser
document.addEventListener("DOMContentLoaded", function () {
// Obtain position
var position = $('#ins').val();
// Use the position
var options = {locus: position, ...};
var igvDiv = document.getElementById("igvDiv");
igv.createBrowser(igvDiv, options)
.then(function (browser) {
console.log("Created IGV browser");
})
};
以及 html 中带有按钮的 table。
<table class='results-table'>
<tr>
<th class='text text--bold'>Chromosome</th>
<th class='text text--bold'>Start</th>
<th class='text text--bold'>End</th>
<th class='text text--bold'>Genome Browser</th>
</tr>
<tr>
<td class='text'>chr1</td>
<td class='text'>0</td>
<td class='text'>100</td>
<td><button class='editbtn' value='chr1:0-100' id='ins1'>chr1:0-100</button></td>
</tr>
<tr>
<td class='text'>chr2</td>
<td class='text'>200</td>
<td class='text'>400</td>
<td><button class='editbtn' value='chr2:200-400' id='ins2'>chr2:200-400</button></td>
</tr>
</table>
有了这个,浏览器获得了第一个位置,但是当我点击按钮时它并没有改变。 我想我需要某种 onClick() 操作,但我不知道如何更改 javascript 脚本。
如有任何帮助,我们将不胜感激。 谢谢!
朱莉娅
编辑: 我添加了更多 javascript 代码,因为我认为我无法正确说明我的问题。并且还修改了按钮的 id,使它们不同。
问题是如何根据单击的按钮在 javascript 中使用不同的 ID。
您可以在点击事件中访问 ID 和值:
// Construct genome browser
document.querySelector('table.results-table').addEventListener('click', function ({ target }) {
if (!target.id) return;
const id = target.id;
const position = target.value;
console.log(id);
console.log(position);
});
<table class='results-table'>
<tr>
<th class='text text--bold'>Chromosome</th>
<th class='text text--bold'>Start</th>
<th class='text text--bold'>End</th>
<th class='text text--bold'>Genome Browser</th>
</tr>
<tr>
<td class='text'>chr1</td>
<td class='text'>0</td>
<td class='text'>100</td>
<td><button class='editbtn' value='chr1:0-100' id='ins1'>chr1:0-100</button></td>
</tr>
<tr>
<td class='text'>chr2</td>
<td class='text'>200</td>
<td class='text'>400</td>
<td><button class='editbtn' value='chr2:200-400' id='ins2'>chr2:200-400</button></td>
</tr>
</table>
您可以更改一些内容。我从你的按钮中删除了 id,因为你已经有了传递事件的上下文。而不是按钮中的值,我建议您使用数据属性。例如数据值。
function check(e) {
console.log(e.getAttribute('data-value'))
}
<button class='editbtn' onclick="check(this)" data-value='chr2:200-400' >chr2:200-400</button>
<button class='editbtn' onclick="check(this)" data-value='chr1:0-100' >chr1:0-100</button>