Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.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
Javascript 元素内容更改的问题-如何获取新值?_Javascript_Jquery_Html - Fatal编程技术网

Javascript 元素内容更改的问题-如何获取新值?

Javascript 元素内容更改的问题-如何获取新值?,javascript,jquery,html,Javascript,Jquery,Html,我想生成一个简单的表单,它显示数据库中的数据,并允许用户更新这些数据 我通过servlet接收数据,并以JSON文件的形式将其传递给前端。我生成一个表并显示值。前两个值是整数,后两个是文本,所以我选择了问题是如何从单元格输入中获取值 您应该使用类似于$(this.children().first().val() 我建议您在输入上添加一个类,以便更容易地选择它们 var$tbl=$(“#表1”); var指数=1 变量项=[“id”、“1”、“2”、“text1”、“text2”] $( “数字

我想生成一个简单的表单,它显示数据库中的数据,并允许用户更新这些数据


我通过servlet接收数据,并以JSON文件的形式将其传递给前端。我生成一个表并显示值。前两个值是整数,后两个是文本,所以我选择了
问题是如何从单元格输入中获取值

您应该使用类似于
$(this.children().first().val()

我建议您在输入上添加一个类,以便更容易地选择它们

var$tbl=$(“#表1”);
var指数=1
变量项=[“id”、“1”、“2”、“text1”、“text2”]
$(
“数字数字2文本2”)
.附件(待定)
$("" +
项目[3]+
"" +
项目[4]+
"")
.附件(待定);
$(“正文”)。追加(“”);
$(“#btn_1”)。单击(htmltable2json)
函数htmltable2json(){
var json='{';
var myRows=[];
var headersText=[];
var$headers=$(“#表1”);
变量$rows=$(“#表1 tr”)。每个(函数(索引){
$cells=$(this.find(“td”);
myRows[index-1]={};
$cells.each(函数(cellIndex){
//设置标题文本
if(标题文本[cellIndex]==未定义){
headersText[cellIndex]=$($headers[cellIndex]).text();
}
myRows[index-1][headersText[cellIndex]]=$(this.children().first().val()?$(this.children().first().val():$(this.text());
});
});
警报(JSON.stringify(myRows));
}

更好的解决方案是获取输入值,而不是子文本或值,如下所示:

var$tbl=$(“#表1”);
var指数=1
变量项=[“id”、“1”、“2”、“text1”、“text2”]
$(
“数字数字2文本2”)
.附件(待定)
$("" +
项目[3]+
"" +
项目[4]+
"")
.附件(待定);
$(“正文”)。追加(“”);
$(“#btn_1”)。单击(htmltable2json)
函数htmltable2json(){
var json='{';
var myRows=[];
var headersText=[];
var$headers=$(“#表1”);
变量$rows=$(“#表1 tr”)。每个(函数(索引){
$cells=$(this.find(“td”);
myRows[index-1]={};
$cells.each(函数(cellIndex){
//设置标题文本
if(标题文本[cellIndex]==未定义){
headersText[cellIndex]=$($headers[cellIndex]).text();
}
myRows[index-1][headersText[cellIndex]=$(':input',$(this)).val()?$(':input',$(this)).val():$(this).text();
});
});
警报(JSON.stringify(myRows));
}


我通过servlet接收数据,并将其以JSON文件的形式传递到前端。
@ScottMarcus是的,在我的示例中,警报的内容将与其他数据一起发送回服务器。您是否测试了当您单击时哪些数据将发送到服务器,然后在返回时这些数据会发生什么情况?我替换了原始数据JSON与item数组一起使用,因为这部分更像是我文章的介绍部分-我的问题是在前端输入/文本数组字段发生更改后获取新值,如
$(this).text()
显示了旧的值。非常感谢,这解决了我的问题;D-但是你能告诉我,为什么吗?我的意思是,如果我的版本不能得到任何值,我会理解,但是为什么它会给我旧的值?不是更精确地得到第一个
输入
文本区域
的值,而不是第一个子节点吗?只是一个小变化ge到标记(例如,添加一个包装
div
)会使您的解决方案失败。@jelhan是的,当然,在我看来,他的所有代码都会更好