如何仅用按钮替换文本框和按钮
How to Replace a Textbox and Button with just a Button
这对我来说很难解释,但我会尝试。
我有一个 html 文档和一个外部 jQuery 文件。
jQuery 文件创建了一个带有网格引用的 table(不确定该术语是否正确)。
table 有 12 行和 24 列。
网格从左上角单元格的 0,0 开始,到右下角单元格的 11,23 结束
有一个按钮可以从文本框中获取值(格式为 0,1 或 0,2 等)。
然后将该值传递给 html 页面上的脚本,该脚本调用外部 jQuery 文件。
returns 来自 jQuery table 的单元格的值(0 或 1)并将其输出到页面。
单元格值与单元格的背景颜色相关(例如白色 (1) 或蓝色 (0))。
这一切都很好,但我想替换文本框并以编程方式输入它的值。
该值永远不会改变,因此文本框是对房地产的浪费。最终它将传递一系列单元格值(但我还没有尝试这样做,因为我将不得不编辑 jQuery 文件)。
因此,单击该按钮将使用 html 文档中的 variable/s 中的值,而不是文本框。
我需要以某种方式将文本框 ID 和值传递给按钮代码(以便稍后在页面上运行该函数)。
我猜我需要使用我尝试过的另一个函数,但是必须传递 id 和值会让人感到困惑(我什至不能传递其中一个)。
当然,如果我删除文本框,我会在控制台中收到错误消息:
(TypeError: $(...).val(...) is undefined).
文本框(我想删除)和按钮(我添加的函数调用):
<input type="text" placeholder="0,0" id="J_cellIndex" value="0,0"/><button class="J_sheetControl" id="J_timingGetCol" onclick="TheCell(this.J_cellIndex)">
函数(正如我现在所拥有的那样,我知道它非常离谱并且不向按钮传递任何内容):
function TheCell(J_cellIndex){
var J_cellIndex = "0,6"
console.log(J_cellIndex);
}
脚本:
$("#J_timingGetCol").click(function(ev){
var cellIndex = $("#J_cellIndex").val().split(',');
var cellData = sheet.getColState(cellIndex);
var $dataDisplay = $("#J_dataDisplay") ;
$dataDisplay.html("<b>Cell Data At ["+cellIndex+"] : </b>"+cellData);
});
使用 data attributes 来存储您的值。您可以将 data attributes
添加到您需要的任何 DOM 元素(tr
、td
、button
或您需要的任何其他元素)。如果您不需要任何用户输入,确实没有充分的理由将这些值存储在 input
元素中。
以下是如何在脚本中使用 data attributes
(您甚至不需要 jQuery):
//Note the added data-value attribute//
<button data-value="0,1" class="J_sheetControl" id="J_timingGetCol" onclick="TheCell(this.J_cellIndex)">
//Getting the data and the values//
var button = document.querySelector('#J_timingGetCol');
var buttonDataSet = button.dataset;
var cellIndex = buttonDataSet.value.split(',');
...use the cellIndex as before
这对我来说很难解释,但我会尝试。 我有一个 html 文档和一个外部 jQuery 文件。 jQuery 文件创建了一个带有网格引用的 table(不确定该术语是否正确)。 table 有 12 行和 24 列。 网格从左上角单元格的 0,0 开始,到右下角单元格的 11,23 结束
有一个按钮可以从文本框中获取值(格式为 0,1 或 0,2 等)。 然后将该值传递给 html 页面上的脚本,该脚本调用外部 jQuery 文件。 returns 来自 jQuery table 的单元格的值(0 或 1)并将其输出到页面。 单元格值与单元格的背景颜色相关(例如白色 (1) 或蓝色 (0))。
这一切都很好,但我想替换文本框并以编程方式输入它的值。 该值永远不会改变,因此文本框是对房地产的浪费。最终它将传递一系列单元格值(但我还没有尝试这样做,因为我将不得不编辑 jQuery 文件)。 因此,单击该按钮将使用 html 文档中的 variable/s 中的值,而不是文本框。
我需要以某种方式将文本框 ID 和值传递给按钮代码(以便稍后在页面上运行该函数)。 我猜我需要使用我尝试过的另一个函数,但是必须传递 id 和值会让人感到困惑(我什至不能传递其中一个)。 当然,如果我删除文本框,我会在控制台中收到错误消息:
(TypeError: $(...).val(...) is undefined).
文本框(我想删除)和按钮(我添加的函数调用):
<input type="text" placeholder="0,0" id="J_cellIndex" value="0,0"/><button class="J_sheetControl" id="J_timingGetCol" onclick="TheCell(this.J_cellIndex)">
函数(正如我现在所拥有的那样,我知道它非常离谱并且不向按钮传递任何内容):
function TheCell(J_cellIndex){
var J_cellIndex = "0,6"
console.log(J_cellIndex);
}
脚本:
$("#J_timingGetCol").click(function(ev){
var cellIndex = $("#J_cellIndex").val().split(',');
var cellData = sheet.getColState(cellIndex);
var $dataDisplay = $("#J_dataDisplay") ;
$dataDisplay.html("<b>Cell Data At ["+cellIndex+"] : </b>"+cellData);
});
使用 data attributes 来存储您的值。您可以将 data attributes
添加到您需要的任何 DOM 元素(tr
、td
、button
或您需要的任何其他元素)。如果您不需要任何用户输入,确实没有充分的理由将这些值存储在 input
元素中。
以下是如何在脚本中使用 data attributes
(您甚至不需要 jQuery):
//Note the added data-value attribute//
<button data-value="0,1" class="J_sheetControl" id="J_timingGetCol" onclick="TheCell(this.J_cellIndex)">
//Getting the data and the values//
var button = document.querySelector('#J_timingGetCol');
var buttonDataSet = button.dataset;
var cellIndex = buttonDataSet.value.split(',');
...use the cellIndex as before