Javascript 仅当出现标记时,如何获取内部的值?
我有一个HTML页面及其关联的js文件。其目的是将插入表中的数据转换为JSON文件。用户可以编辑表格单元格,然后单击按钮,以便Javascript文件解析数据,并将其作为Ajax请求发送到服务器上的PHP文件。然后,PHP文件将数据作为文件存储在服务器上,并将链接发回。 对于标记,我需要使用val而不是文本来获取所选的值。但是,val返回一个空字符串。如何使其正确返回值 var$TABLE=$'TABLE'; 变量$BTN=$'export-BTN'; var$EXPORT=$'EXPORT'; $'.table add'.clickfunction{ var$clone=$TABLE.find'tr.hide'.clonetrue.removeClass'hide TABLE line'; $TABLE.find'TABLE'。追加$clone; }; $'.table remove'.clickfunction{ $this.parents'tr'.detach; }; $'.table up'。单击函数{ var$row=$this.parents'tr'; 如果$row.index==1返回;//不要超过标题 $row.get0之前的$row.prev; }; $'.table down'。单击函数{ var$row=$this.parents'tr'; $row.next.after$row.get0; }; //仅用于导出的几个jQuery帮助程序 jQuery.fn.pop=[].pop; jQuery.fn.shift=[].shift; $BTN.clickfunction{ //alertok; var$rows=$TABLE.find'tr:not:hidden'; var头=[]; var数据=[]; //获取标题在此处添加特殊标题逻辑 $$rows.shift.find'th:not:empty'。每个函数{ headers.push$this.text.toLowerCase; }; //将所有现有行转换为可循环数组 $rows.eachfunction{ var$td=$this.find'td'; var h={}; //使用前面的标题来命名哈希键 headers.forEachfunction头,i{ h[标题]=$td.eqi.val; 警报$td.eqi.val; }; data.push; }; //输出结果 normaldata=JSON.stringifydata; $.ajax{ 类型:POST,, url:filemaker.php, 数据:{data:normaldata}, 成功:函数输出{ var a=document.createElement'a'; a、 href='data.gmp' a、 下载=data.gmp; a、 点击; //我们到达这里; } }; }; .表格可编辑{ 位置:相对位置; } .table可编辑.glyph图标{ 字体大小:20px; } .表格移除{ 颜色:700; 光标:指针; } .表格移除:悬停{ 颜色:f00; } .桌子朝上,.桌子朝下{ 颜色:007; 光标:指针; } .桌子向上:悬停,.桌子向下:悬停{ 颜色:00f; } .附表{ 颜色:070; 光标:指针; 位置:绝对位置; 顶部:8px; 右:0; } .表格添加:悬停{ 颜色:0b0; } HTML5可编辑表 HTML5可编辑表 通过contenteditable的强大功能和一些简单的jQuery,您可以轻松创建自定义的可编辑表。现在不再需要健壮的JavaScript库了 导出哈希数组的可编辑表。动态编译来自标题的行 简单/强大的功能,如添加行、删除行、上移/下移行。 类型 医生 专业化 城市 地区 等级 药剂师 医生 炒菜 炒菜 炒菜 炒菜 A+ A. B C 药剂师 医生 炒菜 炒菜 炒菜 炒菜 A+ A. B C 导出数据Javascript 仅当出现标记时,如何获取内部的值?,javascript,jquery,html,Javascript,Jquery,Html,我有一个HTML页面及其关联的js文件。其目的是将插入表中的数据转换为JSON文件。用户可以编辑表格单元格,然后单击按钮,以便Javascript文件解析数据,并将其作为Ajax请求发送到服务器上的PHP文件。然后,PHP文件将数据作为文件存储在服务器上,并将链接发回。 对于标记,我需要使用val而不是文本来获取所选的值。但是,val返回一个空字符串。如何使其正确返回值 var$TABLE=$'TABLE'; 变量$BTN=$'export-BTN'; var$EXPORT=$'EXPORT'
给定以下jQuery方法: 该方法主要用于获取表单元素的值,如input、select和textarea 该方法的结果是一个字符串,包含所有匹配元素的组合文本 对于每个表单元格,似乎要返回子单元格的val(如果存在),否则返回子单元格的文本 使用JavaScript,我们可以根据存在的文本或val来选择: 逻辑或|| expr1 | | expr2 如果可以将expr1转换为true,则返回expr1;否则,返回expr2 像这样:
$select.val() || $td.text()
下面是一个例子:
var$TABLE=$'TABLE';
变量$BTN=$'export-BTN';
var$EXPORT=$'EXPORT';
$'.table add'.clickfunction{
var$clone=$TABLE.find'tr.hide'.clonetrue.removeClass'hide TABLE line';
$TABLE.find'TABLE'。追加$clone;
};
$'.table remove'.clickfunction{
$this.parents'tr'.detach;
};
$'.table up'。单击函数{
var$row=$this.parents'tr';
如果$row.index==1返回;//不要超过标题
$row.get0之前的$row.prev;
};
$'.table down'。单击函数{
var$row=$this.parents'tr';
$row.next.after$row.get0;
};
//仅用于导出的几个jQuery帮助程序
jQuery.fn.pop=[].pop;
jQuery.fn.shift=[].shift;
$BTN.clickfunction{
//alertok;
var$rows=$TABLE.find'tr:not:hidden';
var头=[];
var数据=[];
//获取标题在此处添加特殊标题逻辑
$$rows.shift.find'th:not:empty'。每个
作用{
headers.push$this.text.toLowerCase;
};
//将所有现有行转换为可循环数组
$rows.eachfunction{
var$tds=$this.find'td';
var h={};
//使用前面的标题来命名哈希键
headers.forEachfunctionheader,i{
var$td=$tds.eqi;
var$select=$td.find'select';
h[标题]=$select.val | |$td.text;
console.logh[标题];
};
};
};
.表格可编辑{
位置:相对位置;
}
.table可编辑.glyph图标{
字体大小:20px;
}
.表格移除{
颜色:700;
光标:指针;
}
.表格移除:悬停{
颜色:f00;
}
.坐到桌上,
.放下桌子{
颜色:007;
光标:指针;
}
.上桌:悬停,
.桌子放下:悬停{
颜色:00f;
}
.附表{
颜色:070;
光标:指针;
位置:绝对位置;
顶部:8px;
右:0;
}
.表格添加:悬停{
颜色:0b0;
}
类型
医生
专业化
城市
地区
等级
药剂师
医生
炒菜
炒菜
炒菜
炒菜
A+
A.
B
C
药剂师
医生
炒菜
炒菜
炒菜
炒菜
A+
A.
B
C
导出数据
您的算法$td.eqi的第一次返回是
<td contenteditable="true">
<select>
<option value="pharmacist">Pharmacist</option>
<option value="doctor">Doctor</option>
</select>
</td>
并且不具有属性值,因此您具有空值
第二个值是
<td contenteditable="true">stir-fry</td>
它没有属性值,所以也返回null
只需使用文字,文字清晰。因为.text将只获取标记中的文本
我希望我能帮助和理解我所说的lol .text和.val返回完全不同的数据段。第一个为您提供标记内的文本内容,另一个为value属性。@vlaz我知道,但问题是,为什么我得不到值?元素没有值。.val方法主要用于获取表单元素的值,如input、select和textarea。-@谢谢你。是否有任何解决方法可以从中的标记获取值?您可以…选择选择标记。问题已经回答。但是,对于内部不包含的标记,使用文本可以很好地工作。