Javascript值比较是不合逻辑的

时间:2011-08-08 02:30:11

标签: javascript html css

首先是代码:

function focusAction(thefield, autofill) {

if (thefield.value == thefield.defaultValue && (thefield.style.color == 'rgb(153, 153, 153)' || thefield.style.color == '#999999')) {
    thefield.style.color = "#000000";
    if (autofill == "")
    thefield.value = '';
}
}

function blurAction(thefield, autofill) {
    //var content = thefield.value;
if (thefield.value == '' || thefield.value == null) {
    thefield.value = thefield.defaultValue;
    if (autofill == "")
        thefield.style.color = "#999999";
} else {
    //thefield.style.color="green";
}
}

所以这是交易:如果我把if(thefield.value ==“”|| thefield.value == null)它有效,但你必须有空格。如果该框为空,则不起作用。这只会影响textareas。它适用于空白文本框。

我真的感到困惑,任何人都知道为什么空间有效,但是空的“”或“或”空无效?

3 个答案:

答案 0 :(得分:0)

什么不起作用?这适用于空''http://jsfiddle.net/wYPNX/

答案 1 :(得分:0)

<强>建议:

  • 使用类进行视觉更改。 CSS比JavaScript更容易更改,而且更加强大。
  • 我建议使用更强大的表单插件。如果这是不受欢迎的,那很好。我建议使用插件,因为有更多的支持,并且通常比自己创建的项目有更少的错误。
  • 修剪您的输入。这意味着忽略前导和尾随空格,让您更好地了解实际存在的内容。这可能会解决您的问题,除非是由于下一点。
  • 您是否要与空白区域进行比较?通常您会想知道它是空还是空,而不是它是否有空格或空。
  • 使用===与null进行比较。

答案 2 :(得分:0)

也许它值得颠倒你的代码并像这样测试它:

if (thefield.value && thefield.value.length > 0) {
    //thefield.style.color="green";
} 
else {
    thefield.value = thefield.defaultValue;
    if (autofill == "")
        thefield.style.color = "#999999";
}