Javascript 使用jQuery从HTML表中检索值?

Javascript 使用jQuery从HTML表中检索值?,javascript,jquery,html,Javascript,Jquery,Html,我只是想知道使用jquery从HTMl代码中检索当前值并将其存储到数组中的最佳方法是什么 <table id="metric_summary"> <tbody> <tr class="editable_metrics"> <td><label>DataSet:</label></td> <td><input name="DataSet" val

我只是想知道使用jquery从HTMl代码中检索当前值并将其存储到数组中的最佳方法是什么

<table id="metric_summary">
    <tbody>   
    <tr class="editable_metrics">
        <td><label>DataSet:</label></td>
       <td><input name="DataSet" value="prod"></td>
    </tr>

    <tr class="editable_metrics">
        <td><label>HostGroup:</label></td>
       <td><input name="HostGroup" value="MONITOR"></td>
    </tr>

    <tr class="editable_metrics">
        <td><label>Host:</label></td>
       <td><input name="Host" value="ALL"></td>
    </tr>

    <tr class="editable_metrics">
        <td><label>Class:</label></td>
       <td><input name="Class" value="CPU"></td>
    </tr>

    <tr class="editable_metrics">
        <td><label>Object:</label></td>
       <td><input name="Object" value="cpu"></td>
    </tr>

    <tr class="editable_metrics">
        <td><label>Metric:</label></td>
       <td><input name="Metric" value="CapacityCPUUtilization"></td>
    </tr>

数据集:
主机组:
主持人:
类别:
对象:
公制:


谢谢

我没有测试它,但它应该可以完成以下任务:

var Dict = {};
$('#metric_summary input').each(function (index, input) {
  Dict[input.name] = input.value;
});
编辑:如果要在不带标签的数组中存储值,可以执行以下操作:

var Values = [];
$('.editable_metrics input').each(function (i, input) {
  Values.push(input.value);
});
但您不知道哪个值引用哪个标签。您可能希望这样做:

var Values = [];
$('.editable_metrics input').each(function (i, input) {
  Values.push( [ input.label, input.value ] );
});

我将迭代每一行,并为我关心的
标签和
输入值解析每一行。请注意,如果标签名称重复,对象存储将丢失值

var arr_storage = []; // var to store as array
var obj_storage = {}; // var to store as object
$('#metric_summary tr').each(function(){
    var key = $('td label:first', this).text()
    var value = $('td input:first', this).val();
    arr_storage.push([ key, value ]);
    obj_storage[key] = value;
});

基本上,有两种方法可以做到这一点。基本步骤:

  • 选择所有TDs
  • 迭代它们,将它们添加到对象中
  • 有很多不同的方法可以做到这一点。没有一个是真的错或对,但有些可能比其他的表现更好或更差。如果需要再次访问这些行或单元格,请考虑将其与站点上的其他操作链接起来的方法,或者考虑如何出于性能原因缓存内容

    下面是一种使用
    map()
    获取标签/值对象数组的方法,该方法在以下情况下运行良好:

    someObject = $('#metric_summary .editable_metrics td:first-child').map(function(){
        var $el = $(this);
        return { 'label' : $el.find('label').html(), 'value' : $el.next().find('input').val() }
    }); 
    

    可能效率不高,但应该让您开始。

    #metric_summary将为您提供表格,而不是行。谢谢,我忘记了“输入”选择器。这对我来说是失败的。传递到
    each()
    的函数的第一个参数是索引,第二个是元素。因此,将
    (输入)
    修改为
    (索引,输入)
    ,代码就会工作。好的,谢谢你的提示。我想知道索引与实际元素相比有多有用。谢谢你的回答,但我已经决定将输入框的当前值存储到数组中。它是这样的:“函数retrieve_metric_stats(){var metricVals=[];$('.editable_metric')。each(函数(input){metricVals=input.val;return metricVals;});}”