javascript - 如何读取表格中多个下拉列表中的选定选项?
问题描述
单击提交按钮时,我想通过 ajax 调用将所有数据发送到服务器。我正在尝试获取下拉列表的选定文本,它为每次迭代提供第一个下拉列表的文本。
JSFiddle https://jsfiddle.net/L7xy2kjz/10/。
这是我尝试的结果:
ScoreCard={"Heading":"pawar","parameters":[{"Name":"nikita ","Raiting":"ME","Score":"0"},{"Name":"mayuri","Raiting":"ME","Score":"0"}]},{"Heading":" schoool","parameters":[{"Name":"sss","Raiting":"ME","Score":"0"}]}
在上面的代码中,即使从下拉列表中选择了不同的选项,即。"Raiting":"ME"
. 但输出显示第一个下拉列表的文本。
function GetObservationReview() {
var parameters = {}, status;
var ObservationArray = [];
$('#ObservationEntry, .tblObservation').each(function () {
var item = $(this).closest("tr").find('td'); //get each row
var hasclassparam = $(this).closest("tr").attr('name') === 'ObsevHeading';
if (status == 'Parameters' && $(this).attr('name') === 'ObsevHeading') { //if next tr is heading then push whole object in array till first heading
metrics = {
'Heading': Heading1,
'parameters': paramarray // paramNewArray
//work in process
}
var stringyfydata = JSON.stringify(metrics);
ObservationArray.push(stringyfydata);
metrics = {};
paramarray = [];
}
if ($(this).attr('name') === 'ObsevHeading') { //if the current row having name as heading
status == 'heading';
$.each(item, function (key, value) {
if (key == 0) {
Heading1 = ($(value).text());
}
//else if (key == 1) {
// TotalWeightage = ($(value).text());
//}
});
}
if ($(this).attr('name') === 'ObsvParameters') { //read parameters
status = 'Parameters';
var e = document.getElementById("dropDownLevelChangetrue");
var strUser = e.options[e.selectedIndex].text;
var islastchild = $(this).closest("tr").is(":last-child"); //last child
MyLevels = {}; i = 1;
$.each(item, function (key, value) {
if (key == 0) {
parametername = ($(value).text());
}
if (key == 1) {
param_Raiting = (strUser);
}
if (key == 2) {
para_Score =($(value).text());
}
});
parameters = {
"Name": parametername,
"Raiting": param_Raiting,
"Score": para_Score
}
paramarray.push(parameters);
if (islastchild === true) { // if row is last row add whole object in data
metrics = {
'Heading': Heading1,
'parameters': paramarray //parameter array that stores Paameter name and its weightage
}
var stringyfydata = JSON.stringify(metrics);
ObservationArray.push(stringyfydata); //pushing whole object in data1 array
paramarray = [];
metrics = {};
}
}
});
alert("ScoreCard=" + ObservationArray);
return ObservationArray;
}
预期结果:
ScoreCard={"Heading":"pawar","parameters":[{"Name":"nikita ","Raiting":"EE","Score":"0"},{"Name":"mayuri","Raiting":"ME","Score":"0"}]},{"Heading":" schoool","parameters":[{"Name":"sss","Raiting":"NI","Score":"0"}]}
解决方案
我认为您总是从这些行中的相同元素中获取价值
var e = document.getElementById("dropDownLevelChangetrue");
var strUser = e.options[e.selectedIndex].text;
尝试通过名称或其他方式获取它们。getById 总是获取 DOM 节点中的第一个并结束
推荐阅读
- php - 使用 jquery 和 ajax 使用 foreach 循环插入多个复选框
- html - 在缩放的 html 正文上使用画布
- python - 调整 sklearn.ensemble.GradientBoostingClassifier 中预测方法阈值的方法
- python - 带有嵌入式 Matplotlib 的 PyQt - 焦点问题
- ios - iOS - 无法构建,缺少标题(虽然存在于文件夹中)
- arrays - Swift - 如何编码超过 512 个字符的字符串?
- xcode - 如何在 Xcode 助手编辑器预览模式下从纵向旋转到横向
- flash - 制作一个空中俘虏运行时捆绑包(用于虚拟级别)
- swift - 试图链接 XCTest 目标的未定义符号
- c - scanf 用数组格式化多个特殊字符