js使用this获取a标签id值

本文探讨了JavaScript中使用a标签时this关键字的行为差异,特别是在href属性与事件监听器中this指向的不同,并提供了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载自:http://www.sufeinet.com/thread-2222-1-1.html    苏飞论坛

<html xmlns="http://www.w3.org/1999/xhtml">
<head >
    <title></title>
 
</head>
<body>
     
  <script type="text/js">
  function getpid(obj) {
  alert(obj.id);
  }
    </script>
    <a href="#" id="123">单击测试</a>
</body>
</html>

this只有在事件里才生效,在href里是不生效的,获取的是当前页面,而不是当前单击的控件


问个基本问题!
<a href="javascript:search('hj_total',this.id);" id="hjt" plain="false"></a>
这个 this.id 在js里面取不到数据
这样写应该没有问题啊

function search(strObj, strID) {
            var idname = '#' + strID;
            if ($(idname).text() == 0) {
                return false;
            }

            $('#win').window('refresh', 'VehicleDistributionDetail.aspx?station=' + strObj.toString() + '&model=' + $('#selModels').combobox('getValue'));

        }
无法浏览网页()  10:52:09
search(strObj, strID) 第二个参数 strID 值一直未undefined
站长苏飞<sufei.1013@163.com>  10:54:23
你直接写HJk不就行了
hjt
无法浏览网页()  10:55:04
我好多a 标签是调用这个js的
无法浏览网页(1250623166)  11:14:31
我找到问题了~!a标签不能用href 里面的js 参数 this
必须是事件 例如onclick 参数 this才能取到


<think>好的,我现在需要帮助用户解决在JavaScript中获取和修改HTML元素的布尔属性的问题。首先,我要回忆一下相关的DOM操作方法。 用户提到了布尔属性,比如checked、disabled这些。这些属性在HTML中通常只要存在就会生效,不管是什么,比如<input type="checkbox" checked>。但是在JavaScript中,这些属性的处理可能不同。 首先,获取属性。我记得有两种方法:使用getAttribute()和直接通过元素属性访问。比如element.checked。对于布尔属性,直接访问会返回true或false,而getAttribute()会返回属性的字符串,如果属性存在的话,否则是null。例如,checked属性没有设置时,getAttribute('checked')返回null,而element.checked返回false。这时候需要告诉用户这两种方法的区别,并推荐使用直接属性访问,因为它更准确反映当前状态。 然后是修改布尔属性。同样,可以通过setAttribute()或者直接赋。但使用setAttribute('checked', '')会添加该属性,而设置element.checked = true会更直接。需要注意的是,像disabled这样的属性,只要存在就会生效,所以设置element.disabled = true会添加该属性,而设置为false则会移除它。这里可能需要举例说明,比如操作一个复选框的checked属性,或者按钮的disabled属性。 还要注意一些特殊案例,比如HTML5中的布尔属性规范,属性存在即为true,不存在为false。所以在使用setAttribute时,即使设置为false,只要属性存在,仍然会生效。因此,正确的方法应该是添加或移除属性,例如使用removeAttribute()来删除布尔属性。 然后需要生成相关问题,可能包括不同属性的处理方法,或者为什么推荐直接属性访问而不是getAttribute,以及如何处理自定义布尔属性等。 需要检查是否有引用相关内容。用户提供的引用中,引用[2]提到了DOM操作,获取元素和修改属性,所以可以引用这个。例如,在讨论getAttribute和直接属性时,可以引用[^2]提到的DOM操作方法。 总结步骤: 1. 获取布尔属性:推荐直接访问属性,如element.checked。 2. 修改布尔属性:直接赋,如element.disabled = true。 3. 注意setAttribute和直接赋的区别,以及removeAttribute的使用。 4. 提供代码示例,如操作复选框和按钮。 5. 引用相关文档,比如引用[2]关于DOM操作的部分。 现在要确保回答结构清晰,分步骤说明,代码正确,并且引用了正确的来源。同时生成相关问题,帮助用户深入理解。</think>在JavaScript中操作HTML元素的布尔属性需要注意属性状态与DOM对象属性的对应关系,具体方法分为三个步骤: 一、获取布尔属性的正确方式 1. 使用元素属性直接访问(返回true/false): ```javascript // 获取复选框选中状态 const isChecked = checkbox.checked; // 直接返回布尔 ``` 2. 避免使用getAttribute方法(返回字符串或null): ```javascript const attrValue = checkbox.getAttribute('checked'); // 存在时返回"",否则返回null ``` 二、修改布尔属性的推荐方法 1. 通过直接赋设置属性状态: ```javascript // 禁用按钮示例 button.disabled = true; // 添加disabled属性 checkbox.checked = false; // 移除checked状态 ``` 2. 使用属性状态切换技巧: ```javascript // toggle方法示例 checkbox.checked = !checkbox.checked; ``` 三、特殊场景处理 1. 需要完全移除属性时使用: ```javascript // 移除readonly属性 input.removeAttribute('readonly'); ``` 2. 自定义布尔属性处理建议: ```javascript // 处理data-*属性 element.toggleAttribute('data-active', force); // force参数可选 ``` 代码示例: ```html <input type="checkbox" id="agree"> <button id="submitBtn" disabled>提交</button> <script> const checkbox = document.getElementById('agree'); const btn = document.getElementById('submitBtn'); // 实时同步按钮状态 checkbox.addEventListener('change', function() { btn.disabled = !this.checked; console.log('当前状态:', { checked: this.checked, // 正确获取方式 disabled: btn.disabled // 直接属性访问 }); }); </script> ``` 注意要点: - 布尔属性在DOM中的状态与HTML标记的对应关系:存在属性即视为true[^2] - 直接操作DOM属性比操作HTML属性更符合实际需求[^2] - 使用toggleAttribute()方法可以智能切换属性状态(ES6+)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值