我正在尝试创建一个循环(或使用.each
)来更改许多DOM元素的style:display
属性。我最初的想法是使用getElementsByName
来选择我命名为ptext1
的所有元素:
<p id="ptext0"name="ptext">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p id="ptext1"name="ptext1">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p id="ptext2"name="ptext1">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p id="ptext3"name="ptext1">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p id="ptext4"name="ptext1">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p id="ptext5"name="ptext1">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p id="ptext6"name="ptext1">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
使用
var TextElements = document.getElementsByName("ptext1");
制作名称为ptext1
但是我无法正确使用该方法,因此我转到了.each
。
两者
$.each(TextElements, function (index) {
this.style.display="none";
});
和
$('td[name=ptext1]').each(function (index) {
this.style.display="block";
});
似乎没有正常工作(我一直在测试它是否使用警报运行)。
现在,如果有人能够看到我的错误所在,或者建议采用更好的方法,那我就听见了。这应该是一个简单的操作,但由于某些原因我每次尝试都会失败。
编辑:
$('p[name=ptext1]').hide()
和$('p[name=ptext1]').show()
正在工作,除了.hide()也隐藏了我想隐藏的那条线,
<p id="ptext0"name="ptext">Lorem ipsum dolor sit amet, consectetur adipiscing elit.
</p>
每一行都有一个不同的id标签,但是我试图使用name标签来跟踪我想隐藏哪些,但是应该保留的行(name =“ptext”)也会隐藏。
答案 0 :(得分:9)
为什么不简单地使用:
$('p[name="ptext1"]').css( 'display', 'none');// you can use block...
如果您想显示一行,请使用.not()
排除该行:
$('p[name="ptext1"]').not('#ptext3').css( 'display', 'none');// you can use block...
如果你只想使用vanilla JavaScript,你可以这样做:
var TextElements = document.getElementsByName("ptext1");
for (var i = 0, max = TextElements.length; i < max; i++) {
TextElements[i].style.display = "none";
}
答案 1 :(得分:1)
将其与 JQuery 一起使用:
$("[name='ptext1']").css("display", "value");
//change value to the display value you want
//$("[name='ptext1']").css("display", "block");
纯 JavaScript:
var elements = document.getElementsByName("ptext1");
for (var i = 0; i < elements.length; i++) {
elements[i].style.display = "value";
}
//also change value to display value wanted.
答案 2 :(得分:0)
这将有效
jQuery("*[name$='ptext1']").css( 'display', 'block');
或
jQuery("*[name$='ptext1']").css( 'display', 'none');
答案 3 :(得分:0)
这很简单,适用于IE8。只需将所有<p>
元素添加到名为“myDiv”的<div>
function myFunction() {
var x = document.getElementById("myDIV");
var y = x.getElementsByTagName("P");
var i;
for (i = 0; i < y.length; i++) {
y[i].style.display="none"; }
}
如果您要更改<div>
中的所有(“*”)元素,请使用:
var y = x.getElementsByTagName("*");
如果您想更改<P>
中的第二个<div>
元素,请使用:
x.getElementsByTagName("p")[1].style.backgroundColor = "red";
它类似于数组。
答案 4 :(得分:0)
我认为一种更简单的方法是在您的HTML元素中添加一个类
<p class='myclass'>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p class='myclass'>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p class='myclass'>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
然后在JavaScript中,您可以按以下方式更改样式:
$('.myclass').css('display', 'none');