我有一些输入字段,其id号会动态更改。
例如,下面的代码显示了一个“id="field14
”的输入字段。 id中的单词( field )不会更改,但( number )会动态更改。因此它可能是field14,field13或field20等,并且数字没有限制。
<input type="text" name="field[14]" id="field14" value="" size="30" style="height: 24px;">
我正在使用以下代码来设置输入字段的样式:
document.getElementById("field14").style.height = "24px";
注意,应用程序的PHP代码是编码的&amp;我正在使用smarty模板进行编辑。
模板中的输入代码如下所示:{$field.input}
因此,当我检查实时页面上的元素时,它会显示输入的上述代码以及动态编号。
我想要一种方法,允许我使用单词( field )和结束对开始的页面的任何输入字段进行样式设置动态(数字)。有什么建议吗?
答案 0 :(得分:4)
对于纯CSS方法,我会检查name
,因此您应该只查找属性以field[
开头并以右括号]
结尾的输入元素。< / p>
e.g。
input[name^="field["][name$="]"] {
...
}
从您发布的代码中,您可以合理地假设括号[]
中包含数字索引的所有元素的名称也与该id
的动态索引相同。
否则,您可能会编写一组更复杂的选择器,以id
开头并以数字field
[0..9]
e.g。
input[id^="field"][id$="0"],
input[id^="field"][id$="1"],
input[id^="field"][id$="2"],
input[id^="field"][id$="3"],
input[id^="field"][id$="4"],
input[id^="field"][id$="5"],
input[id^="field"][id$="6"],
input[id^="field"][id$="7"],
input[id^="field"][id$="8"],
input[id^="field"][id$="9"] {
...
}
甚至将这两种方法结合起来
input[name^="field["][name$="]"][id$="0"],
input[name^="field["][name$="]"][id$="1"],
...
input[name^="field["][name$="]"][id$="9"] {
...
}
答案 1 :(得分:3)
您可以使用属性选择器:
input[id^=field] {
/* Styles */
}
它将匹配input
属性以&#34;字段&#34;开头的所有id
个元素。在&#34; field&#34;之间使用一些分隔符并且这个数字可能更好,以防止匹配像&#34; fieldone&#34;。
input[id^=field] {
background: red;
}
&#13;
<input id="field1" />
<input id="field2" />
<input id="field3" />
<input id="field15" />
<input id="field99" />
&#13;
答案 2 :(得分:2)
我强烈建议使用class属性:
<强> HTML 强>
<input type="text" class="fields" name="field[14]" id="field14" value="" size="30" style="height: 24px;">
<强> CSS 强>
.fields {
/*style*/
}
答案 3 :(得分:2)
我想要一种方法,允许我设置页面的任何输入字段的样式 从单词(字段)开始,以动态(数字)结束。任何 建议好吗?
这是一个非常特定的问题,希望我们能够确定id以“field”开头并以动态数字结尾的事实。恕我直言这个解决方案完全按照要求使用CSS回答您的问题,而且它不需要您更改HTML或添加类属性(尽管这会更好)。
此CSS代码将找到任何<input>
标记,其id以“field”开头并以数字结尾。它也将排除以“字段”开头但不以数字结尾的那些。
input[id^='field'][id$='0'],input[id^='field'][id$='1'],input[id^='field'][id$='2'],input[id^='field'][id$='3'],input[id^='field'][id$='4'],input[id^='field'][id$='5'],input[id^='field'][id$='6'],input[id^='field'][id$='7'],input[id^='field'][id$='8'],input[id^='field'][id$='9']
{
// styling code
}
答案 4 :(得分:1)
如果您需要 JS方法:
http://codepen.io/knitevision1/pen/LEaXxW
var num = 2;
document.getElementById("input" + num).style.backgroundColor = "blue";
如果我说得对,你需要所有新的input
看起来有点独特或者什么。
你可以考虑获得一些当前呈现的inputs
,然后获取最后一个,然后根据你想要的样子附加你的风格。
答案 5 :(得分:1)
使用jquery:
var inputs = [];
function getFields(){
$('input').each(function() {
if($(this).attr('id').substring(0,5)=='field'){
inputs.push($(this));
}
});
}
你可以修改“each”循环中的每个输入,或者你可以使用“inputs”变量。
答案 6 :(得分:1)
演示:http://jsbin.com/kubaku/1/edit?html,js,output
<强> JS 强>
var inputs = document.getElementsByTagName('input');
var ID = 'field';
var i;
for(i = 0; i < inputs.length; i++) {
var input = inputs[i];
var regex = new RegExp("^" + ID);
if(regex.test(input.id)) {
input.style.border = '1px solid #c00';
}
}