Javascript 按名称获取输入未定义

Javascript 按名称获取输入未定义,javascript,jquery,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]; v

我试图为一个输入分配一个值,该输入具有一个动态生成的名称,但我似乎无法访问该输入的值

这就是我正在做的:

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:



我已经仔细阅读了代码,并且正确生成了
targetName
,因此我假设我在查找输入的线路上做错了什么。关于我做错了什么有什么建议吗?

在不知道HTML是什么样子的情况下,我认为您缺少targetName周围的引号。通常,jQuery会访问如下html输入

$('input[name="somename"]')
在您的情况下,您应该这样做:

$('input[name="' + targetName + '"]').val(correctedTemperature );

错误在于您生成的名称错误

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

Simple console.log节省了时间。

还向我们显示了
名称
数组的内容。当我对targetName、correctedTemperature和输入本身的name属性使用静态值时,此代码对我有效。刚刚更新了它。我相信我试过引用和不引用。我将再次尝试使用属性
val=”“
!==值。你确定“targetName”是你所认为的吗
console.log(targetName,$('input[name='+targetName+'])
那么
\u4\uu
页面上是否有具有该id的元素?我刚刚尝试了这个,但似乎仍然不起作用。我得四处看看,看是不是别的什么东西是Borke你确定你的名字是对的吗?该名称为
icdf_1_3_-1_6077_-1
,在最后一个字符集(
-1
)之前有一个下划线,但生成代码没有添加该下划线。它这样做
name[4]+name[5]
。这是否会导致名称为
icdf_1_3_-1_6077-1
?除非有空格,否则引号并不重要。1是名称的一部分。我检查了生成的名称和我试图生成的名称字段,它们完全相同,因此是正确的。在您的情况下,
name[5]
将是
-1
。为了澄清,我手动添加了
\u4
,因为我试图访问的输入将始终位于第4行,其中,我用于生成目标的当前输入字段位于第3行。示例:当前输入为
icdf_1_3_-1_6077_-1
,目标为
icdf_1_4_-1_6077_-1
@john显然名称不正确。我们注意到有一个缺少的下划线看起来应该在那里。你能证实这一点吗?老实说,我在看照片的时候都没有意识到这一点。我现在要打自己一巴掌了。@john刚才已经提出了生成错误的
targetName
的可能性。你应该密切注意这类事情!:)而且总是反复检查,即使你确定,哈哈。我发帖子的原因是我到处找,但仍然找不到答案,所以45分钟后,我决定在愤怒之前发帖子。我一直在看屏幕截图,看它是否不同,但没有发现它。谢谢你澄清了我愚蠢的错误
false
18 19
icdf_1_4_-1_6077-1
icdf_1_4_-1_6077_-1