Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在纯javascript中检查元素是否具有ID?和条件语句问题_Javascript_Conditional Statements - Fatal编程技术网

如何在纯javascript中检查元素是否具有ID?和条件语句问题

如何在纯javascript中检查元素是否具有ID?和条件语句问题,javascript,conditional-statements,Javascript,Conditional Statements,在下面的代码中,您可能会看到一些问题(或许多问题)。首先,我假设sender元素在函数的第一行中有一个ID。我的控制台充满了错误,因为调用此函数的一些div在我的html中没有id(在我的实际网站中,这只是问题的一个小复制)。我是否必须给他们ID,或者我是否可以让函数先检查他们是否有ID,然后继续?第二个问题是我的if语句。它总是试图检查调用此函数的每个元素的3个父元素!我在控制台中有如此多的错误,因为这-我如何保持这个函数的相同结果而不产生这些错误。例如,在检查3个父元素的ID之前,我是否可以

在下面的代码中,您可能会看到一些问题(或许多问题)。首先,我假设sender元素在函数的第一行中有一个ID。我的控制台充满了错误,因为调用此函数的一些div在我的html中没有id(在我的实际网站中,这只是问题的一个小复制)。我是否必须给他们ID,或者我是否可以让函数先检查他们是否有ID,然后继续?第二个问题是我的if语句。它总是试图检查调用此函数的每个元素的3个父元素!我在控制台中有如此多的错误,因为这-我如何保持这个函数的相同结果而不产生这些错误。例如,在检查3个父元素的ID之前,我是否可以先检查它是否有3个父元素?下面是我的代码,这里是JSBIN:


内容素材

其他东西 函数someFunction(元素){ var elementId=element.id; var elementInner=document.getElementById(elementId).innerHTML; if(document.getElementById(elementId.parentElement .parentElement.parentElement.id=='boxContainer'){ document.getElementById('otherStuff').innerHTML='content was hover'; } }

我没有使用jquery。

就我而言,这个“应用程序”的功能可以简化为以下脚本:

<script>
    function someFunction( element ){
        document.getElementById( 'otherStuff' ).innerHTML = 'content was hovered';
    }
</script>
解决方案:

用上面的方法修改你的代码怎么样。像这样:

function someFunction( element ){
    var parent = element.parentElement.parentElement.parentElement;

    if( hasId(parent) && parent.id == 'boxContainer' ){
        document.getElementById( 'otherStuff' ).innerHTML = 'content was hovered';
    }
}

这将检查
id
,同时检查
id
是否为
“boxContainer”
。这里有一个问题。

关于检查元素id的建议答案是错误的:

typeof element.id != 'undefined';
如果DOM元素没有指定id(因此永远不会“未定义”),则
element.id
将返回一个空字符串。 要检查元素是否具有指定的id,可以执行以下操作:

element.hasAttribute('id')
或:

甚至:

element.getAttribute('id') !== null

如果事件中已经包含了元素,为什么需要调用
getElementById()
再次获取它?我想我没有,但这是导致问题的原因吗?我应该在没有这个的情况下尝试吗?“当然,这是造成问题的原因吗?”。如果元素没有ID,你就不能通过ID来查找。我真的试图在我的代码中解决这个问题,但没有工作。你能用正确的代码更新我的jsBin吗?这有点难以解释:我有很多onmouseover事件具有不同的ID,有些在我的实际程序中没有ID。由于这个原因,我不能只针对一个ID。我想。这回答了我问题的前半部分。但我的代码仍在尝试搜索每个调用方的3个父元素,这会抛出一个错误。有什么想法吗?@carb0nshel1我在上面提供了一个可行的解决方案。一般来说,让应用程序逻辑如此严重地依赖于标记结构是一个坏主意。如果你刚刚开始,那么这些混乱是值得学习的。继续坚持下去,但不要害怕放弃你所拥有的,重新开始。我理解你为什么从
otherStuff
中删除了onmouseover事件,但问题的关键是保留它。我感谢你的努力,也许我的问题还不够清楚。抱歉。@carb0n帮助1相反,otherStuff事件被删除的原因很明显是因为没有表达问题的“全部要点”。也许您应该尝试告诉我们您希望应用程序实际执行的操作。我们不是读心术的人。
element.hasAttribute('id')
element.hasOwnProperty('id')
element.getAttribute('id') !== null