我遇到了一个我觉得很奇怪的问题,尽管我仍在学习javascript。我只想在设置状态值时才进行一些计算,如果未设置状态,则希望表单字段集中显示。

现在的问题是下面的代码不起作用

document.getElementById('cart-hplus').addEventListener('submit', estimateTotal);

function estimateTotal(event) {
    event.preventDefault();

    var state = document.getElementById('s-state').value;
    if (state === '') {
        alert("Please choose your preferred shipping state.");

        state.focus();
    }
}



但这有效,但我认为声明变量然后在if语句中再次使用document对象不是一个好习惯
function estimateTotal(event) {
    event.preventDefault();

    var state = document.getElementById('s-state').value;
    if (state === '') {
        alert("Please choose your preferred shipping state.");

        document.getElementById('s-state').focus();
    }
}

第一个代码有什么问题?

最佳答案

您没有在状态输入控件和状态值之间进行区分。您将需要使用2个变量:

function estimateTotal(event) {
    event.preventDefault();
    var state = document.getElementById('s-state');
    var stateValue = state.value;
    if (stateValue === '') {
        alert("Please choose your preferred shipping state.");
        state.focus();
    }
}

另外,您拥有的方式也不错。两次引用该对象没有错。

09-13 12:34
查看更多