如何在javascript中识别动态html对象?

如何在javascript中识别动态html对象?,javascript,Javascript,我有一个如下的html代码。我想知道如何在javascript中动态标识sessionEventsDecorator[0].startDateStr,sessionEventsDecorator[1].startDateStr。其目的是确保用户输入的年份值不大于2013年 <input id="sessionEventsDecorator[0].startDateStr" name="sessionEventsDecorator[0].startDateStr" class="te

我有一个如下的html代码。我想知道如何在javascript中动态标识sessionEventsDecorator[0].startDateStr,sessionEventsDecorator[1].startDateStr。其目的是确保用户输入的年份值不大于2013年

<input id="sessionEventsDecorator[0].startDateStr" name="sessionEventsDecorator[0].startDateStr" class="text small" onchange="formDirty();" type="text" value="Mar 05, 2013"/&rt;


<input id="sessionEventsDecorator[1].startDateStr" name="sessionEventsDecorator[1].startDateStr" class="text small" onchange="formDirty();" type="text" value="Mar 05, 2013"/&rt;

好的,根据您对Sebas回答的评论,我认为这就是您所寻找的,根据我们可以看到的代码:

var loopIndex = 0;

while (document.getElementById("sessionEventsDecorator[" + loopIndex + "].startDateStr"))
{
    var inputField = document.getElementById("sessionEventsDecorator[" + loopIndex + "].startDateStr");

    . . . logic to check date . . .

    loopIndex++;
}

也就是说,div的命名约定有点混乱。简化ID将有助于提高可读性。此外,如果您可以使用JQuery并为所有这些输入提供一个公共类,那么还有更简洁的迭代方法。

您应该将元素的id和name属性设置为更简单的属性:

<input type="text" class="text small" onchange="formDirty()" name="dateDecorator0" id="dateDecorator0">

<input type="text" class="text small" onchange="formDirty()" name="dateDecorator1" id="dateDecorator1">

document.getElementById(“sessionEventsDecorator[0].startDateStr”)
…当您说“动态标识”时,您的意思是循环所有输入并检查每个输入吗?我认为OP希望使用属性的文本来查找现有对象的属性。但我可能是错的。@系统可能是错的。有点不清楚。让我们看看他是否有评论?@ben336,我想在javascript函数中获取表单中所有startDateStr的值。可以将这些startDateStr动态添加到表单中。如果在示例代码段中看到,则有两个startDateStr字段sessionEventsDecorator[0]。startDateStr,sessionEventsDecorator[1]。startDateStr。相同形式的startDateStr不能有n个。如何在javascript函数中检查它们的值?谢谢@talemyn。我想知道如何在这里对inputField变量的值执行子字符串。当在Firefox中使用类似inputField.value的东西时,它可以正常工作,但在IEF中不起作用。您在寻找什么子字符串?类似于
var fieldValue=inputField.value
将以字符串的形式为您获取字段的值(在FF和IE中工作),然后您可以随心所欲地操作
fieldValue
。此外,如果您不需要对字段本身执行任何操作,您也可以将这两个步骤结合起来,只需执行
var fieldValue=document.getElementById(“sessionEventsDecorator[“+loopIndex+”].startDateStr”)。值。我有一段代码var val=document.getElementById(“sessionEventsDecorator[“+loopIndex+”].startDateStr”);var val2=val.value;当我把alert(val2)放在IE中时,它并没有发出警报,而是在FF中工作。好吧,那是因为
val
只是一个字符串。它没有
属性。创建
val
时,为其指定了字段值。如果这是您想要看到的,那么只需使用
alert(val)并且它应该在两种浏览器中都能工作。
var loopIndex = 0;

while (document.getElementById("sessionEventsDecorator[" + loopIndex + "].startDateStr"))
{
    var inputField = document.getElementById("sessionEventsDecorator[" + loopIndex + "].startDateStr");

    . . . logic to check date . . .

    loopIndex++;
}
<input type="text" class="text small" onchange="formDirty()" name="dateDecorator0" id="dateDecorator0">

<input type="text" class="text small" onchange="formDirty()" name="dateDecorator1" id="dateDecorator1">
function formDirty(){
    var val=this.value;
    if(val.substr(val.indexOf(",")+2) > 2013){
        this.value=val.substr(0,val.indexOf(",")+2)+"2013";
    };
}