javascript - 在 Javascript 中,显示的不是值而是变量名称

标签 javascript

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 应用于您的变量,因此它们不是隐含的全局变量,应该始终避免它们,因为它们只不过是隐藏错误的邪恶 friend 。

我使用的代码

HTML 非常简单,但我确实有两个带有 ID 的元素,这些 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];
    }
}​

关于javascript - 在 Javascript 中,显示的不是值而是变量名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11865699/

相关文章:

javascript - jQuery 打开最后一个类弹出窗口

javascript - 如何让 intro js 与 React 一起工作?

javascript - 计算方法无法识别更新的数据

javascript - jquery 'on' 不工作

javascript - Material 设计网站 MDCTab :interacted event not emitting after activateTab

在任何情况下都运行代码的Javascript switch case?

javascript - Jquery选择器语法

javascript - 提示输入 5 个单词,然后显示最长的单词 javascript

javascript - Angular:需要解决一系列操作(Observable)

Javascript 将 CSS 注入(inject) Swift WebView