脚本未按ID定位某些元素,但对其他元素效果很好

青蛙

如果已标识的DOM元素之一为空,则将背景色更改为红色,否则将背景色更改为透明。为什么这在电话或位置字段上不起作用?

我还有另一个针对诸如document.forms [“ pledge”] [“ position”]之类的元素的脚本,它也适用于除电话和位置之外的所有其他字段。我想念什么?

function checkFilled() {
    var fname = document.getElementById("fname"),
        lname = document.getElementById("lname"),
        email = document.getElementById("email"),
        country = document.getElementById("country"),
        zip = document.getElementById("zip"),
        position = document.getElementById("position"),
        phone = document.getElementById("phone");
    ;    
    if (fname.value != "") {
        fname.style.backgroundColor = "transparent";
    } else {
        fname.style.backgroundColor = "red";
    }

    if (lname.value != "") {
        lname.style.backgroundColor = "transparent";
    } else {
        lname.style.backgroundColor = "red";
    }

    if (email.value != "") {
        email.style.backgroundColor = "transparent";
    } else {
        email.style.backgroundColor = "red";
    }

    if (country.value != "") {
        country.style.backgroundColor = "transparent";
    } else {
        country.style.backgroundColor = "red";
    }

    if (zip != undefined && zip.value != "") {
        zip.style.backgroundColor = "transparent";
    } else {
        zip.style.backgroundColor = "red";
    }

    if (position.value != "") {
        position.style.backgroundColor = "transparent";
    } else {
        position.style.backgroundColor = "red";
    }

    if (phone.value != "") {
        phone.style.backgroundColor = "transparent";
    } else {
        phone.style.backgroundColor = "red";
    }
}

的HTML

<form name="pledge" id="form">
    <input class="input" type="text" id="fname" name="first_name" placeholder="First Name" onchange="checkFilled()">
    <input class="input" type="text" id="lname" name="last_name" placeholder="Last Name" onchange="checkFilled()">
    <input class="input" type="text" id="position" name="user_position" placeholder="Position in Government" onchange="checkFilled()">
    <input class="input" type="text" id="country" name="user_country" placeholder="Country" onchange="checkFilled()">
    <input class="input" type="email" id="email" name="user_email" placeholder="Official Government Email" onchange="checkFilled()">
    <input class="input" type="number" id="phone" name="user_phone" placeholder="Office Phone Number" onchange="checkFilled()">
    <input class="input full-width" type="submit" value="Take The Pledge!">
</form>

https://codepen.io/froggomad/pen/maRJxr


该脚本失败,因为它试图处理该表单上不存在的zip元素。我错误地尝试通过检查条件是否存在并包含一个值,然后如果两个条件都不成立(OOPS)来更改其背景颜色,来处理该条件

工作守则

if (zip != undefined) {
  if (zip.value != "") {
    zip.style.backgroundColor = "transparent";
  } else {
    zip.style.backgroundColor = "red";
  }
}
马克·鲍姆巴赫

您的表单没有带zipid的元素,因此尝试zipzip检查的else语句中修改style属性会引发错误null由于该错误导致函数失败,因此基于positionandphone的if语句不执行。

如果删除if/else检查zip变量,则这两个字段将再次起作用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

对父元素透明,但对其他元素不透明

数组仅打印某些元素,而不打印其他元素

Java:某些表单元素被其他元素部分覆盖

断言某些元素与其他元素无关,与顺序无关

jQuery影响其他元素后,禁用CSS悬停效果

SCSS - 悬停效果扩展到其他元素

绝对定位元素不在Safari iOS中的其他绝对定位元素之上

不影响其他元素在边框宽度更改上的定位

vue如何定位其他組件元素的dom

通过其他元素的值查找元素 ID

显示具有通用ID的元素,隐藏其他元素

重叠元素比其他元素

更改arma :: vec中给定位置的元素,并更改其他向量中的相应元素

如何相对于SVG中的其他元素定位元素

不能通过 nth-child 定位其他元素内的元素

将元素定位在页面中间而不考虑其他元素

导航栏固定位置及其对其他元素定位的影响

此脚本是否需要其他元素?

在其他元素完成动画处理后对某些元素进行动画处理

React Native的LayoutAnimation仅对某些UI元素设置动画,其他元素跳

如何在 Kivy 中隐藏某些元素并提升其他元素

我应该如何遍历HashSet,删除某些元素并更改其他元素?

影响某些元素而非其他元素的媒体查询

以ID定位子元素的Javascript

如何使ListView定位在某些元素下?

java list.remove对于第一个元素工作良好,但对其他元素却不起作用

如何使用xpath搜索特定子元素而不是其他子元素包含某些关键字的元素?

jQuery在循环中填充其他元素内的按钮ID

如何更改其他文件中的已加载元素ID?