Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.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:检查元素是否可以接受值_Javascript_Dom - Fatal编程技术网

javascript:检查元素是否可以接受值

javascript:检查元素是否可以接受值,javascript,dom,Javascript,Dom,我正在尝试这样做(伪代码): 因此,对于输入、文本区域等,它将设置值,但对于div或span,它将设置innerHTML 或者我应该简单地设置值和innerHTML,因为innerHTML对输入元素是无害的吗?如注释中所述,您可以使用 if (element.nodeName == "INPUT" || element.nodeName == "TEXTAREA") {} “INPUT”和“TEXTAREA”是您正在使用的标记,因此添加您想要检测的标记 作为旁注,您可以将其大大简化为 if

我正在尝试这样做(伪代码):

因此,对于输入、文本区域等,它将设置
,但对于div或span,它将设置
innerHTML


或者我应该简单地设置
innerHTML
,因为innerHTML对输入元素是无害的吗?

如注释中所述,您可以使用

if (element.nodeName == "INPUT" || element.nodeName == "TEXTAREA") {}
“INPUT”
“TEXTAREA”
是您正在使用的标记,因此添加您想要检测的标记


作为旁注,您可以将其大大简化为

if (element.nodeName != "DIV") {}

但是,只有当您确定传入的任何元素都将是一种输入类型或
div

基本in运算符应该执行此操作时,才能执行此操作

函数hasValue(elem){
返回元素中的“值”
}
console.log('input',hasValue(document.querySelector('t1'))
console.log('div',hasValue(document.querySelector('#t2'))
console.log('select',hasValue(document.createElement('select'))
console.log('textarea',hasValue(document.createElement('textarea'))
console.log('h1',hasValue(document.createElement('h1'))
console.log('span',hasValue(document.createElement('span'))

您可以使用该属性获取标记名

函数更新元素(elemId){
var attr=document.getElementById(elemId).attributes;
if(attr[0].ownerElement.tagName=='INPUT'){
document.getElementById(elemId).value='adding to value'
}否则{
document.getElementById(elemId.innerHTML='添加到内部html中'
}
}
updateElement('inputElem')
updateElement('divElem')

您可以使用操作符中的
检查是否有任何元素具有
属性-请参见下面的演示:

Array.prototype.forEach.call(document.body.children,function(element){
if(元素中的“值”)
element.value=“form”;
其他的
element.innerHTML=“非表单”;
});

非形式
形式

为什么需要这样做?为什么不知道元素是输入元素还是内容元素?typeof element.value!='undefined“我认为没有一种干净的方法可以做到这一点,但您可以尝试这样做:
如果(element.tagName=='input'| | | element.tagName=='testarea'| |…)
@Barmar呈现HTML的程序将发送输入区域或静态文本(div),具体取决于用户的编辑权限。我不想依靠检查类名来确定它是否是我的输入元素。您也可以使用
element.nodeName==“input”
as。这是检查元素是否为输入的一种非常简单的方法!
if (element.nodeName != "DIV") {}