【问题标题】:HTTP input to javascript variable remains undefinedjavascript变量的HTTP输入仍未定义
【发布时间】:2018-02-14 16:07:07
【问题描述】:

好的,所以我对 javascript 还很陌生,我正在为我的实习开发一个 web 应用程序的前端,这完全让我感到困惑。

我有一个 select 和一个 input 元素,它们都通过 .POST() 输入到数据库过程调用的消息模型中。我已经在项目的其他脚本中完成了此操作,但无论我如何尝试分配值,它都无法正常工作。

代码如下:

var cctOldSelect = document.getElementById("ConceptToCopy");
var cctOld = cctOldSelect.options[cctOldSelect.selectedIndex].value;
var cctNew = document.getElementById('NewConceptName').value;
console.log("cctOld: " + cctOld + "; cctNew: " + cctNew);
if (cctOld !== "" && cctNew !== "") {
    console.log("model creation started.");
    var model = {
        p_cct_code_old: cctOldSelect.options[cctOldSelect.selectedIndex].value,
        p_cct_code_new: document.getElementById('NewConceptName').value,
        p_specialty_layout: null
    };
    console.log("model creation ended.");
}
console.log("cctOld model: " + model.cctOld + "; cctNew model: " + model.cctNew);

输出:

cctOld: 1020H; cctNew: 1021H
model creation started.
model creation ended.
cctOld model: undefined; cctNew model: undefined

我尝试了多种方法:

p_cct_code_Old: $scope.<ElementID>  //both with and without .value
p_cct_code_Old: document.getElementById(<ElementID>)    
var cctOld = document.getElementById(<ElementID>); p_cctOld: cctOld

这些都不起作用。为什么不赋值?

【问题讨论】:

  • 你创建了一个对象model,它没有名为cctOld的属性,然后你做model.cctOld,自然是undefined。我不确定你想做什么。
  • 是的。您的对象模型没有名为 cctOldcctNew 的字段。
  • 澄清@Karl 所有console.log 的内容都是为了弄清楚为什么DB proc 返回一个错误,说需要cct code old。所以我认为模型变量设置不正确,因为我选择中的 cct 代码是从数据库中检索的。但显然我很累,犯了这样一个基本错误,比如在 console.log 中输入了错误的属性名称。难怪我不知道为什么我的模型没有被填充,因为它是。现在要弄清楚为什么数据库不会接受它。回到绘图板。

标签: javascript var unassigned-variable


【解决方案1】:

在这种情况下,问题是您创建了一个名为“model”的新对象,并具有两个名为“p_cct_code_old”和“p_cct_code_new”的属性,然后您尝试访问两个名为“cctOld”和“cctNew”的属性超出范围

当你试图访问一个不存在的属性时,JS 解释器不会抛出错误,而是返回一个未定义的值。

我建议让事情发挥作用的事情是:

var model = {};
var cctOldSelect = document.getElementById("ConceptToCopy");
var cctOld = cctOldSelect.options[cctOldSelect.selectedIndex].value;
var cctNew = document.getElementById('NewConceptName').value;
console.log("cctOld: " + cctOld + "; cctNew: " + cctNew);
if (cctOld !== "" && cctNew !== "") {
    console.log("model creation started.");
    model.p_cct_code_old = cctOldSelect.options[cctOldSelect.selectedIndex].value;
    model.p_cct_code_new = document.getElementById('NewConceptName').value;
    model.p_specialty_layout: null;
    console.log("model creation ended.");
}
console.log("cctOld model: " + model.p_cct_code_old + "; cctNew model: " + model.p_cct_code_new);

告诉我这个解决方案是否对你有帮助!

【讨论】:

  • "当你试图访问一个不存在的属性时,JS 解释器不会抛出错误,而是返回一个未定义的值。"对我记忆有用。它将来使我免于一两次追逐。我想习惯 c# 让我过于依赖 IDE。谢谢。
猜你喜欢
  • 2023-01-20
  • 1970-01-01
  • 2021-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-07
  • 1970-01-01
相关资源
最近更新 更多