Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.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检索HTML元素的类型_Javascript_Html - Fatal编程技术网

无法使用JavaScript检索HTML元素的类型

无法使用JavaScript检索HTML元素的类型,javascript,html,Javascript,Html,我想知道如何用标记名检索元素的类型 我正在HTML表单上创建代码。有所有类型的HTML输入元素textfield、button、datepicker 我想要的是,如果用户从下拉列表中选择一个选项,请禁用复选框。但该复选框是使用PHP循环生成的,我还在复选框名称中传递了id,因此我无法使用: document.getElementsByName('checkbox'); 我的复选框名为checkbox,因此我尝试使用: document.getElementsByTagName('input')

我想知道如何用标记名检索元素的类型 我正在HTML表单上创建代码。有所有类型的HTML输入元素textfield、button、datepicker

我想要的是,如果用户从下拉列表中选择一个选项,请禁用复选框。但该复选框是使用PHP循环生成的,我还在复选框名称中传递了id,因此我无法使用:

document.getElementsByName('checkbox');
我的复选框名为checkbox,因此我尝试使用:

document.getElementsByTagName('input');
我使用它来禁用复选框,但它禁用了页面上的所有输入元素。有什么解决办法吗?如何将type属性用作复选框并禁用on复选框:

function  disabler()
{  
     checkboxes = document.getElementsByTagName('input');
     if(checkboxes.type='checkbox')
     {
        for(var i=1, n=checkboxes.length;i<n;i++)
        {
            checkboxes[i].disabled = true;//here i want to disable only the checkbox on page 
        }
 }
}

您使用的是赋值运算符=非比较==。更换这条线

if(checkboxes.type='checkbox')

或者严格比较运算符===也比较变量类型,例如0===0为false,但0==0为true

您还试图访问getElementsByTagName返回的集合的type属性。要访问特定元素,请将其作为数组引用复选框

if(checkboxes[0].type === 'checkbox') //accesses first checkbox element
要在检查每个元素(如果是复选框)时循环所有元素,请执行以下操作

for(var i=0; i < checkboxes.length; i++)
    {
        if(checkboxes[i].type === 'checkbox') {
            checkboxes[i].disabled = true;
        }
    }
在JavaScript中,=是赋值运算符和===分别是松散和严格的相等运算符。因此:

if(checkboxes.type=='checkbox')  // Loose, does type conversion (not relevant here)

复选框是一个节点列表,而不是单个元素。您需要在复选框[i]上进行测试:


请求帮助时,请花时间将代码格式化为可读。okkk thnk我会记住这一点。您是对的,即=是错误的运算符,但测试复选框。type也是错误的,因为复选框是一个列表…是的,我尝试了ifcheckboxes.type=='checkbox',但它不起作用@MeeneshJain,我编辑了答案。请参阅代码的最后一行。先生,我使用===它使我的代码无法工作。。。。。only=工作正常,但它禁用了该页面上的所有输入抱歉,我必须再次更新它。请现在检查一下。使用最后一段代码6行。
for(var i=0; i < checkboxes.length; i++)
    {
        if(checkboxes[i].type === 'checkbox') {
            checkboxes[i].disabled = true;
        }
    }
if(checkboxes.type=='checkbox')  // Loose, does type conversion (not relevant here)
if(checkboxes.type==='checkbox') // Strict, no type conversion (not relevant here)
function  disabler()
{  
    checkboxes = document.getElementsByTagName('input');
        for(var i=1, n=checkboxes.length;i<n;i++)
        {
            if (checkboxes[i].type == 'checkbox') {
                checkboxes[i].disabled = true;
            }
        }
}