我正在尝试为具有动态生成名称的输入分配值,但我似乎无法访问输入值
这就是我正在做的事情:
function calcCorrectedTo(input){
var name = input.name.split('_');
var value = input.value;
var targetName = name[0] + '_' + name[1] + '_4_' + name[3] + '_' + name[4] + name[5];
var correctedTemperature = calcCorrectedDissipation(10, value);
var target = $('input[name=' + targetName + ']').val();
}
function calcCorrectedDissipation(temp, value){
debugger;
var dissipationFactor = Math.pow(0.5, ((20-temp)/31));
var correctionCoEff = 1/dissipationFactor;
return (parseFloat(value) * correctionCoEff);
}
HTML:
<input type="text" name="icdf_1_3_-1_6077_-1" val="" class="tableInputBox" onblur="calcCorrectedTo(this);">
我已经逐步完成了代码并正确地生成了targetName
,所以我假设我在寻找输入的行上做错了。关于我做错了什么的建议?
答案 0 :(得分:1)
如果不知道您的HTML是什么样的,我认为您错过了targetName周围的引号。通常,jQuery会像这样访问一个html输入
$('input[name="somename"]')
在你的情况下,你应该这样做:
$('input[name="' + targetName + '"]').val(correctedTemperature );
答案 1 :(得分:0)
错误是您生成的名称错误。
var targetName1 = "icdf_1_3_-1_6077_-1";
var expected = "icdf_1_4_-1_6077_-1";
var name = targetName1.split('_');
var targetName = name[0] + '_' + name[1] + '_4_' + name[3] + '_' + name[4] + name[5];
console.log(targetName===expected);
console.log(targetName.length, expected.length);
console.log(targetName);
console.log(expected);
和输出
false
18 19
icdf_1_4_-1_6077-1
icdf_1_4_-1_6077_-1
简单的console.log节省了一天。