本机 Javascript - 如果语句不起作用,则具有 else 属性

Posted

技术标签:

【中文标题】本机 Javascript - 如果语句不起作用,则具有 else 属性【英文标题】:Native Javascript - Has attribute else if statement doesn't work 【发布时间】:2019-05-05 12:10:51 【问题描述】:

我已经设置了我的变量并将其命名为:

const x = document.querySelector(".ui-datepicker-trigger");
const y = document.querySelector("#ctl00_c_TransPwdFunc_img100");

一旦我设置了变量,我就创建了 if 语句,代码如下:

if (x.hasAttribute("src", "/mvptest_int/App_themes/btnCalendar.png") == x)
            x.setAttribute("src","/mvptest_int/App_themes/btnCalendarWhite.png");
            console.log(x);
         else if (y.hasAttribute("src", "../App_Themes/btnGetSMS.png" == y))
            y.setAttribute("src","../App_Themes/btnGetSMSWhite.png");
        

我已经在控制台日志中单独测试了这一点,它们都在工作。但我面临的问题是:

x 属性仅在开始时显示,一旦用户单击下一步,它就会消失,这就是我面临的问题:

Error messageCode error message

所以我可以看到我的 x 更改工作正常,但由于此错误消息,我的 java 脚本都没有工作。

有人可以帮我解决这个问题,如果有更好的解决方案,请告诉我。

谢谢

FE 看: First page Second page

【问题讨论】:

.hasAttribute 返回truefalse,不能等于xNode,除非xnull(在这种情况下@987654336 @ 将引发错误);同时yNode(或null)永远不能等于非空字符串。在不知道这段代码的意图和上下文的情况下,我们只能告诉你“它没有意义”。 看起来你的 y 选择器失败了,但是没有 html,很难说原因 感谢您的建议@Amadan 我想要实现的是:如果(在第一页上找到此 x 属性将属性值更改为新的)否则如果(此 y在第一页找到属性将属性值更改为新的)如果(没有找到跳过此代码)x 和 y 属性位于两个不同的页面中。写这个最好的方法是什么?? 什么是“首页”? xy 不是代码中的属性,它们是元素节点。 感谢您的输入,我会记住的 :) 抱歉,我还是新手,正在努力学习一切。我刚刚添加了更多屏幕截图并解释了我的脚本遇到的问题:1.i.stack.imgur.com/xvKqk.png 2.i.stack.imgur.com/ssk4a.png 更清楚吗? 【参考方案1】:

如果您检查documentation,您可以看到element.hasAttribute 返回truefalse 并且只需要一个属性,而不是像您所做的那样。 这就是你有错误的原因。

假设你使用x.hasAttribute("src") == x,它永远不会返回true。

最后一点,确保您的 x 元素存在。

【讨论】:

我想要实现的是:如果(在第一页找到这个 x 属性,将属性值更改为新的)else if(在第一页找到这个 y 属性将属性值更改为新值)如果(没有找到跳过此代码)x 和 y 属性位于两个不同的页面中。写这个最好的方法是什么?感谢您的帮助

以上是关于本机 Javascript - 如果语句不起作用,则具有 else 属性的主要内容,如果未能解决你的问题,请参考以下文章

当返回值在新行时,为啥 Javascript 返回语句不起作用?

基本的 If else 语句在 javascript 中不起作用

JavaScript if 语句不起作用[重复]

Javascript:document.getElementById.innerHTML 中的 if-else 语句不起作用

如何在本机 Web 浏览器中打开链接(常见建议不起作用)?

Whack-A-Mole javascript返回并且循环不起作用