Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.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/jquery—如何检查元素是否具有文本属性_Javascript_Jquery - Fatal编程技术网

javascript/jquery—如何检查元素是否具有文本属性

javascript/jquery—如何检查元素是否具有文本属性,javascript,jquery,Javascript,Jquery,是否有某种方法可以在运行时确定元素是否返回element.text()的值?使用javascript还是jquery 也就是说,某种检查元素是纯文本还是其他类型的元素的方法 为什么我需要解决上述问题-- 我试图解析一些具有完全不同编码风格的复杂表单(例如,单选按钮元素的文本值可能包含在标签标签中,或者直接给定,或者包含在跨度标签中,等等……) 所以我需要用表单id作为包装来解析表单 现在,如果单选按钮的文本值包含在span中,并且当前选定的元素是单选按钮,那么下一个元素将是span标记(打开),

是否有某种方法可以在运行时确定元素是否返回element.text()的值?使用javascript还是jquery

也就是说,某种检查元素是纯文本还是其他类型的元素的方法

为什么我需要解决上述问题--

我试图解析一些具有完全不同编码风格的复杂表单(例如,单选按钮元素的文本值可能包含在标签标签中,或者直接给定,或者包含在跨度标签中,等等……)

所以我需要用表单id作为包装来解析表单

现在,如果单选按钮的文本值包含在span中,并且当前选定的元素是单选按钮,那么下一个元素将是span标记(打开),我不想对其执行任何操作并继续。之后的一个将是文本,我想使用this.text()获得它


因此,整个问题…

您好,您可以检查元素的类型,如下所示

   <form >
    <input type="text" id="a" value="abc"/>
    </form>
    <script>

       var type = document.forms[0].elements[0].type;
       alert(type);

    </script>

var type=document.forms[0]。元素[0]。类型;
警报(类型);

您可以使用
nodeType
检查元素是否为纯文本(在这种情况下,其值将为3)

这里有一些文本
$('#wrapper').contents().each(function())
{
警报(this.nodeType);
});
它将向1(输入)和3(文本)发出警报。对于type=3,可以使用
text()
获取文本值

注意-它还将考虑空格(作为文本节点)

另一种检查方法:

if( typeof( $(this).attr('name') ) != 'undefined' ) { // ... }
您可以创建自己的jQuery扩展方法:

$.fn.hasAttr = function(name) {  
   return this.attr(name) !== undefined;
};
$(document).ready(function() {
    if($('.edit').hasAttr('id')) {
        alert('true');
    } else {
        alert('false');
    }
});



 <div class="edit" id="div_1">Test field</div>
$.fn.hasAttr=函数(名称){
返回此.attr(name)!==未定义;
};
$(文档).ready(函数(){
if($('.edit').hasAttr('id')){
警报(“真”);
}否则{
警报(“假”);
}
});
试验场

我知道这很挑剔,其实javascript根本就不是这样,但在使用javascript时,请确保大括号不要以换行符开头,否则语法就不好。@Vikk-我正试图通过“意大利面”进行解析,但您建议的方法(获取节点类型)在忽略开头后无法拾取文本“意大利面”元素…这是text()命令本身的限制吗?如果指定的元素类型包含文本…(在我的示例中是面食),我只想跳过div/span/label/其他此类元素类型。。。或者我是否必须分别对label/span/div采取不同的方法??谢谢…因为意大利面被包含在span标记中,所以它不再是文本节点。现在是一个跨度标签。请更新您在此处尝试执行的操作-
if( typeof( $(this).attr('name') ) != 'undefined' ) { // ... }
$.fn.hasAttr = function(name) {  
   return this.attr(name) !== undefined;
};
$(document).ready(function() {
    if($('.edit').hasAttr('id')) {
        alert('true');
    } else {
        alert('false');
    }
});



 <div class="edit" id="div_1">Test field</div>