Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从HMTL表创建Javascript对象_Javascript_Jquery - Fatal编程技术网

从HMTL表创建Javascript对象

从HMTL表创建Javascript对象,javascript,jquery,Javascript,Jquery,我有一张像这样的桌子 <table id="misc_inputs"> <thead> <tr><th>Property</th><th>Input</th></tr> </thead> <tbody> <tr>

我有一张像这样的桌子

    <table id="misc_inputs">
        <thead>
            <tr><th>Property</th><th>Input</th></tr>
        </thead>
        <tbody>
            <tr>
                <td>a</td> 
                <td><input type="number" value="1"></td>
            </tr>
            <tr>
                <td>b</td> 
                <td><input type="number" value="2"></td>
            </tr>
       ...

如何生成结果?

可能不需要任何库就可以生成,但使用jQuery更容易。类似的方法应该有效(未经测试):

//我们将在这里存储结果
var result={};
//要求jQuery查找每一行(TR标记),并为每一行调用一个函数
$('tr')。每个(函数(){
//在jQuery each()中,“this”是当前元素,在本例中是TR标记
var行=$(此);
//我们要求jQuery查找当前行中的每个TD(jQuery选择器的第二个参数是用于搜索的父节点)。我们获取第一个参数,然后获取标记的内容
变量标签=$(“td”,行).first().text();
//我们在当前行中请求一个“input”标记,并读取其“value”属性
变量值=$(“输入”,行).attr(“值”);
//存储所有结果
结果[标签]=值;

});也许您可以在没有任何库的情况下完成,但使用jQuery更容易。类似的方法应该有效(未经测试):

//我们将在这里存储结果
var result={};
//要求jQuery查找每一行(TR标记),并为每一行调用一个函数
$('tr')。每个(函数(){
//在jQuery each()中,“this”是当前元素,在本例中是TR标记
var行=$(此);
//我们要求jQuery查找当前行中的每个TD(jQuery选择器的第二个参数是用于搜索的父节点)。我们获取第一个参数,然后获取标记的内容
变量标签=$(“td”,行).first().text();
//我们在当前行中请求一个“input”标记,并读取其“value”属性
变量值=$(“输入”,行).attr(“值”);
//存储所有结果
结果[标签]=值;

});您可以循环每个输入并创建对象:

var杂项输入={};
$(“#其他输入输入[type=number]”)。每个(函数(i,el){
var k=$(this.nexist('td').prev().text();
返回其他输入[k]=+el.value;
});
控制台日志(杂项输入)

财产投入
A.
B

您可以循环每个输入并创建对象:

var杂项输入={};
$(“#其他输入输入[type=number]”)。每个(函数(i,el){
var k=$(this.nexist('td').prev().text();
返回其他输入[k]=+el.value;
});
控制台日志(杂项输入)

财产投入
A.
B

您可以使用下面的可重用javascript方法将任何HTML表转换为javascript对象

<table id="MyTable">
<thead>
    <tr><th>Property</th><th>Input</th></tr>
</thead>
<tbody>
    <tr>
        <td>a</td>
        <td><input type="number" value="1"></td>
    </tr>
    <tr>
        <td>b</td>
        <td><input type="number" value="2"></td>
    </tr>
</tbody>

财产投入
A.
B

$(文档).ready(函数(){
函数ConvertHTMLToJSObject(htmlTableId)
{
var objArr={};
var trList=$('#'+htmlTableId).find('tr');
$('#'+htmlTableId).find('tbody tr').each(函数()
{
var行=$(此);
var key=$(行).first().text().trim();
var value=$(行).find('input').attr(“value”);
objArr[key]=值;
});
返回objArr;
}
var obj=ConvertHTMLToJSObject(“MyTable”);
控制台日志(obj);
});

您可以使用下面的可重用javascript方法将任何HTML表转换为javascript对象

<table id="MyTable">
<thead>
    <tr><th>Property</th><th>Input</th></tr>
</thead>
<tbody>
    <tr>
        <td>a</td>
        <td><input type="number" value="1"></td>
    </tr>
    <tr>
        <td>b</td>
        <td><input type="number" value="2"></td>
    </tr>
</tbody>

财产投入
A.
B

$(文档).ready(函数(){
函数ConvertHTMLToJSObject(htmlTableId)
{
var objArr={};
var trList=$('#'+htmlTableId).find('tr');
$('#'+htmlTableId).find('tbody tr').each(函数()
{
var行=$(此);
var key=$(行).first().text().trim();
var value=$(行).find('input').attr(“value”);
objArr[key]=值;
});
返回objArr;
}
var obj=ConvertHTMLToJSObject(“MyTable”);
控制台日志(obj);
});

这似乎是正确的方向。我还没有完全理解它,所以我还没有接受你的答案,我正在处理你的代码。我添加了一些注释来解释代码片段的作用。这看起来非常正确。我还没有完全实现它,所以我还没有接受你的答案,我正在处理你的代码。我添加了一些注释来解释代码片段的功能
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

<script>

$(document).ready(function () {
    
    function ConvertHTMLToJSObject(htmlTableId)
    {
        var objArr = {};
        var trList = $('#' + htmlTableId).find('tr');
        $('#' + htmlTableId).find('tbody tr').each(function ()
        {
            var row = $(this);
            var key = $(row).first().text().trim();
            var value = $(row).find('input').attr("value");
            objArr[key] = value;
        });

        return objArr;
    }

    var obj = ConvertHTMLToJSObject("MyTable");
    console.log(obj);
});