在 Javascript 中,值不来,而是显示变量名称

In Javascript, Value not comming instead the variable name is displayed

本文关键字:显示 变量名 Javascript      更新时间:2023-09-26
function ProvideValue(){
    Values = document.getElementById('HiddenValue').value;
FirstCut = Values.split("@#@"); // This will return the array ID@-@VALUE@-@TYPE
    var CtrlId;
    for (i = 0; i < FirstCut.length - 1; i++) {
        Strings = FirstCut[i];
        SecondCut = Strings.split("@-@");
        if(SecondCut[2].match("TEXT")) {
            CtrlId = "" + SecondCut[0];
            document.getElementById(CtrlId).value = SecondCut[1];
        }
    }
}

这是我的代码,而不是我可以打印的 Id。但 CtrlId 不会替换为实际值。我收到错误document.getElementById(CtrlId).value is NULL。我尝试对 ID 进行硬编码,然后它工作正常,但我无法对控件 ID 进行硬编码,因为有 1000 个控件并且每次 ID 更改时。

你的代码看起来很好(除了隐含的全局变量1),你的 HTML 文档中一定有其他问题......我也不确定为什么你省略了第一次切割的最后一个值,因为你正在length - 2,因为i小于length - 1(不小于或等于),这意味着它一直到值length - 2然后打破循环。

这是我创建的 JSFiddle,它使用您的代码并显示一些额外的控制台消息,并实际将值应用于隐藏输入提供的输入。

1重要

var应用于您的变量,因此它们不是应始终避免的隐含全局变量,因为它们只不过是隐藏错误的邪恶朋友。

我使用的代码

HTML 非常简单,但我确实有两个带有 ID 的元素,这些元素在隐藏字段的复合值中被处理:

<input type="hidden" id="hidden" value="me@-@Rob@-@text@#@you@-@Mike@-@text" />
<input id="me" value="name" />
<input id="you" value="name" />​

脚本也很简单(出于JSFiddle简单的原因,在DOM上运行):

var vals = document.getElementById('hidden').value;
var firstCut = vals.split("@#@");
for(var i = 0; i < firstCut.length; i++) {
    var ctrl = firstCut[i].split("@-@");
    if (ctrl[2].match("text")) {
      var id = ctrl[0];
      document.getElementById(id).value = ctrl[1];
    }
}​