按名称获取输入是未定义的

时间:2014-12-09 21:02:58

标签: javascript jquery

我正在尝试为具有动态生成名称的输入分配值,但我似乎无法访问输入值

这就是我正在做的事情:

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,所以我假设我在寻找输入的行上做错了。关于我做错了什么的建议?

2 个答案:

答案 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节省了一天。