我正在尝试检查是否在if / else语句中设置了变量。
如果尚未设置,我想向DOM添加一个节点,但如果已经设置,我想更新节点。
问题在于“其他”案件似乎永远不会发生。
我错过了什么?
function (response) {
if (typeof outputmessage === 'undefined') {
var outputmessage = document.createElement("p");
outputmessage.innerHTML = response;
TA.parentNode.insertBefore(outputmessage, TA.nextSibling);
} else {
outputmessage.innerHTML = response;
}
}
答案 0 :(得分:1)
您需要在函数范围之外声明outputmessage
变量,因为每次调用函数时它都会被重置:
var outputmessage;
function (response) {
if (typeof outputmessage === 'undefined') {
outputmessage = document.createElement("p");
outputmessage.innerHTML = response;
TA.parentNode.insertBefore(outputmessage, TA.nextSibling);
} else {
outputmessage.innerHTML = response;
}
}
只是为了扩展问题,由于variable hoisting您的原始代码实际上等效于以下内容,这表明outputmessage
始终评估为未定义的原因:
function (response) {
var outputmessage;
if (typeof outputmessage === 'undefined') {
outputmessage = document.createElement("p");
//...
}