Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.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 检查getAttribute是否未定义_Javascript - Fatal编程技术网

Javascript 检查getAttribute是否未定义

Javascript 检查getAttribute是否未定义,javascript,Javascript,目前,我的javascript正在动态创建页面,因此当用户单击X时,会为该选项生成新的html代码,如果是B,则反之亦然 虽然,我得到了“未定义”的错误。即使我在变量传递到函数之前检查了它们 我当前的非工作原型如下所示 var appName; if(evt.target.getAttribute("appName") != "" || evt.target.getAttribute("appName") != null){ appName = evt.target.g

目前,我的javascript正在动态创建页面,因此当用户单击X时,会为该选项生成新的html代码,如果是B,则反之亦然

虽然,我得到了“未定义”的错误。即使我在变量传递到函数之前检查了它们

我当前的非工作原型如下所示

var appName; 
    if(evt.target.getAttribute("appName") != "" || evt.target.getAttribute("appName") != null){
        appName = evt.target.getAttribute("appName");
    }
var appName = evt.target.get("appName");
    if (typeof appName != typeof undefined && appName !== false) {
        appName = evt.target.getAttribute("appName");
    }
    else appName = 'boo';
在那之前,我试过用这样的东西

var appName; 
    if(evt.target.getAttribute("appName") != "" || evt.target.getAttribute("appName") != null){
        appName = evt.target.getAttribute("appName");
    }
var appName = evt.target.get("appName");
    if (typeof appName != typeof undefined && appName !== false) {
        appName = evt.target.getAttribute("appName");
    }
    else appName = 'boo';
仍然返回未定义的

最后,我尝试了大致相同的方法,但仍然返回
未捕获类型错误:无法读取未定义的属性“getAttribute”
以下代码如下所示:

var appName = '';
    if(evt.target.hasAttribute("appName")){
        appName = evt.target.getAttribute("appName");
    } 
    else appName = 'boo';
我如何检查属性是否已设置,如果未设置,我可以继续,然后我想为代码选择替代路线


感谢您的帮助和花费的时间。

evt.target
未定义,这意味着您需要在尝试
getAttribute()
之前检查它。这是您拥有的选项之一,主要取决于您的“代码替代课程”是什么:


通过执行此操作,可以检查是否有未定义的内容(复制自):


注意,typeof总是返回一个字符串。此外,与“双重等于”和“三重等于”进行比较也有区别,因此您可能需要查看。

我提供了示例片段

您已经尝试了
evt.target.getAttribute
而不是尝试
evt.getAttribute

像这样试试

函数findAttr(e){
如果(!e.hasAttribute(“appName”)){
log(“无属性”);
}否则{
log(e.getAttribute(“appName”);
}
}
是否存在attr?

属性是否存在?
如果元素的备用状态由属性的存在/不存在决定,则使用
.toggleAttribute()

功能编辑模式(e){
const clicked=e.target;
常量编辑器=document.querySelector('.editor');
如果(单击了.matches('.mode')){
单击.classList.toggle('on');
单击.classList.toggle('off');
编辑器.toggleAttribute('contenteditable');
如果(单击.matches('.off')){
editor.focus();
}否则{
editor.blur();
}
}
返回false;
}
document.querySelector('.mode')。onclick=editMode
.editor{
最小高度:32px
}
.模式{
浮动:对;
显示:内联块;
宽度:100px;
}
在…之前{
内容:“读/写”;
}
在…之前{
内容:“只读”;
}


请提供HTML和整个函数。错误说明了其他内容
无法读取未定义的属性“getAttribute”
表示您的
evt.target
未定义。请注意:使用严格的不等式
==而不是松散的
=。也可以使用
==
而不是
=
,在问题中提供的事件周围没有上下文,如果您的目标是检查未定义的,您可以这样做:if(event.target&&event.target.getAttribute(…){//代码的其余部分}else{//alternate block}您可以显示html吗?