JS If Else Madnes - PullRequest
       0

JS If Else Madnes

0 голосов
/ 28 января 2020

Хорошо. Я относительно новичок в JS и jQuery, но у меня достаточно опыта работы с другими языками, чтобы знать, что это должно быть хорошо. И это начинает сводить меня с ума.

Может кто-нибудь объяснить, пожалуйста, почему код не запускает второе условие в этом блоке? Я что-то упустил?

if (element === '#fs1' || element.attr('id') === "fs1")
{
    $("#fs1liuwc").show("slow"); 
}
else if (element === '#fs2' || element.attr('id') === "fs2")
{ 
    $("#fs2liuwc").show("slow");
}
else if (element === '#fs3' || element.attr('id') === "fs3")    
{ 
    $("#fs3liuwc").show("slow"); 
}

Итак, первый, где элемент # fs1, в порядке, все работает нормально, но на втором и третьем он просто пропускает оставшуюся часть сценария. Я вызываю эту функцию из этой:

function ClickResize(sender)
{
   $(sender).click(function()
   {
     ResizeElement(sender);  
   });
}

, которая записана в:

$(document).ready(function() {   
   ClickResize('#fs1');
   ClickResize('#fs2');
   ClickResize('#fs3');
});

Ответы [ 2 ]

2 голосов
/ 28 января 2020

Если element может быть либо строкой, либо элементом DOM, когда element является строкой, попытка вызова element.attr('id') немедленно вызовет d ie с TypeError (поскольку element.attr не существует) .

Вам нужно либо убедиться, что element является одним непротиворечивым типом, либо проверить его перед попыткой вызова функции. Минималистским исправлением может быть изменение каждого теста в форме:

if (element === '#fs1' || element.attr('id') === "fs1") {

на:

if (element === '#fs1' || (element.attr && element.attr('id') === "fs1")) {

, так как простая загрузка .attr будет успешной, но вернет undefined, если его не хватает метод / атрибут, в обход попытки вызвать attr (что вызывает исключение).

0 голосов
/ 28 января 2020

перед блоком кода, элемент console.log, так что вы понимаете, что происходит не так.

console.log(element);

if (element === '#fs1' || element.attr('id') === "fs1")
{
    $("#fs1liuwc").show("slow"); 
}
else if (element === '#fs2' || element.attr('id') === "fs2")
{ 
    $("#fs2liuwc").show("slow");
}
else if (element === '#fs3' || element.attr('id') === "fs3")    
{ 
    $("#fs3liuwc").show("slow"); 
}

Кроме того, это не celar (возможно, просто из-за того, как вы это выразили), почему вы делать ResizeElement ( отправитель ); а затем вы проверяете элемент .

...