typeof不适用于未定义类型

时间:2014-12-18 17:57:00

标签: javascript jquery undefined

基本上我正在检查我是否得到一些选定的ID然后使用该选择的值,否则使用来自不同属性的值,有时它发生没有选定的项目所以我得到未定义,但以下代码不解决我的问题

var user_role = $('#user_role option:selected').attr('id');
        if (typeof user_role === 'undefined') {
            alert(intval(jQuery('#selected_role').val()));
            user_role = jQuery('#selected_role').val();
        }

我也试过

var user_role = $('#user_role option:selected').attr('id');
        if (typeof user_role === undefined) {
            alert(intval(jQuery('#selected_role').val()));
            user_role = jQuery('#selected_role').val();
        }

编辑:对于那些要我检查是否(!user_role)的人我已经检查了它并且它不起作用 在上述任何一种方式中,我都没有进入我的if状态。

3 个答案:

答案 0 :(得分:3)

您的undefined检测工作正常。 "问题"是,如果未选择任何内容,option:selected将返回第一个选项,因此typeof .attr('id')永远不会"undefined"



var user_role = $('#user_role option:selected').attr('id');
document.body.innerHTML += user_role;

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select id="user_role">
    <option id="opt1">Opt1</option>
    <option id="opt2">Opt3</option>
    <option id="opt3">Opt3</option>
</select>
&#13;
&#13;
&#13;

(如果您省略了所有optionid个选项,则可以输入if。)

答案 1 :(得分:-1)

检查某些东西是否是jQuery对象的最佳方法(所以你没有得到任何未定义的错误)是这样的:

var user_role = $('#user_role option:selected').attr('id');
if (!user_role) {
     alert(intval(jQuery('#selected_role').val()));
     user_role = intval(jQuery('#selected_role').val());
}

答案 2 :(得分:-2)

undefined是一个对象(不是一个类型)试试这个:

if (user_role === undefined)
{}