2012-01-11 73 views
3

我需要从使用javascript的扩展中更改“for”标签。我不确定如何做到这一点。 提前感谢您的帮助!用java脚本更改html“for”标签

<input id="theCheckboxId" type="checkbox" name="theCheckBoxName" /> 
<label for="theCheckBox">The text I want to change</label> 

回答

5

DEMO

先给标签的ID

<label id="lbl1" for="theCheckBox">The text I want to change</label> 

然后做

document.getElementById("lbl1").setAttribute("for", "theCheckboxId"); 

编辑

w^ait,您是否想更改for值,或更改标签的实际文字?在任何情况下,这里是你将如何改变文本:

if (label.textContent) 
    label.textContent = "New Text"; 
else if (label.innerText) 
    label.innerText = "New Text" 
else 
    label.innerHTML = "New Text"; 
+1

另一种更改'for'值的方法:document .getElementById(“lbl1”)。htmlFor =“theCheckboxId”; – 2014-07-10 21:05:38

2

要更改文本,这样做:

document.getElementById('theCheckboxId').nextElementSibling.textContent = 'newValue'; 

或本:

document.querySelector('#theCheckboxId + label').textContent = 'newValue'; 

或者,如果你需要支持旧浏览器,请执行以下操作:

function nextElement(el) { 
    while((el = el.nextSibling) && el.nodeType !== 1); 
    return el; 
} 

nextElement(document.getElementById('theCheckboxId')).innerHTML = 'newValue'; 

http://jsfiddle.net/3kEYw/

+0

是的,我不确定他是否想要更改文本或for属性。 +1虽然 – 2012-01-11 04:27:13

+0

@AdamRackis:快速浏览示例中的当前文本。 ;)标题是欺骗我必须承认。 – 2012-01-11 04:28:54

+0

是的,那是让我相信他可能想要改变文本的文本...... – 2012-01-11 04:31:09

0

你没问,但如果你正在使用jQuery,你可以做到这一点通过简单:

$('label[for="theCheckBox"]').text('your new text') 

这就是说,给它一个ID,而不是建议肯定是尽管我们不知道您是否可以访问HTML(就像您曾经这样做过,但您可以直接在那里更改文本)