对javascript变量的HTTP输入仍未定义

时间:2018-02-14 16:07:07

标签: javascript var unassigned-variable

好的,所以我对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

这些都不起作用。为什么不会分配一个值?

1 个答案:

答案 0 :(得分:0)

在这种情况下的问题是你创建了一个名为&#34; model&#34;的新对象。并且有两个名为&#34; p_cct_code_old&#34;和&#34; p_cct_code_new&#34;,然后你试图访问两个名为&#34; cctOld&#34;和&#34; cctNew&#34; 超出范围

当您尝试访问非现有属性时,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);

告诉我此解决方案是否对您有所帮助!