Javascript警报不会停留在Mozilla Firefox中

时间:2016-02-19 15:59:00

标签: javascript jsp firefox alert

我写了一个改变下拉列表的警报。它来自下拉列表中选择的特定值。 IE中的警报工作正常,但在Mozilla中它停留片刻并消失。

以下是在下拉列表的onchange上调用的警报代码。

function psychAlert()
{
    var element = document.getElementById("service_help");
    for (var x = 0; x <element.options.length; x++) {
        if (element.options[x].selected) {
            selectedVal = element.options[x].value;
            break;
        }
    }

    if(selectedVal == '1514'){
        alert("Please call Helpline");
    }
}

以下是从onchange调用警报的下拉代码。

<html:select tabindex="<%= tabIndex.getNext()%>" property="serviceDesc" size="1" styleId="service_help" onchange="javascript:  psychAlert(); " ></html:option>
    html:optionsCollection property="serviceDescList" value="lookupCode" label="shortDescription"/>
<html:select>

1 个答案:

答案 0 :(得分:2)

由于您的示例不包含下拉列表中的实际数据,因此我将其清理干净并制作了一个更容易理解的示例,并且应该澄清您遇到的任何问题。此代码已经在IE 8,Firefox和Chrome中进行了测试,并且在所有这三个代码中都可以正常运行。

var example = document.getElementById("dlExample");

example.addEventListener("change", function() {
  if (example.value === "3") {
    alert("Please call the help desk.");
  }
});
<select id="dlExample">
  <option value="0">Hi</option>
  <option value="1">Bye</option>
  <option value="2">Yes</option>
  <option value="3">No</option>
</select>

所以看看这段代码。首先,我们简化了您非常复杂和过度的select。现在你不再在代码中调用onchange,在那里存储值,或者需要不必要的循环。一个简单的select,包含您的所有选项。

对于javascript,我们首先添加一个简单的EventListener,然后找到select getElementsByID(注意我在select中设置了ID,这个名字不会起作用)。之后,我们将EventLIstener设置为基于更改事件。任何更改都发生在该下拉列表中,它将检查并验证下拉值是否是您希望调用警报的任何内容。有时简单就更好了,在这种情况下,更是如此。