-3

我的命名约定

id=xxxxx //actual field shown in the screen
id=xxxxxHDN // hidden field containing the enable/disabled status of the component from the set from the controller.

现在我要做的是让 xxxxxHDN 的状态为 true/false ,并相应地将组件状态设置为 disabled /enabled .with java script..

var div = document.getElementById("hiddenFields"); // i hava some 30 hidden fields       containing the 
var j;
    for (j=0;j<div.childNodes.length;j++)
if(div.childNodes[j].value){
    alert("inside the loop");
    var someElementHDN = div.childNodes[j].id;     // my aim is to get the ID=xxxxxHDN
    var someElementHDNToString = someElementHDN .toString(); // my aim is to get the string value "xxxxxHDN"
    var toRemove = 'HDN'; // the part i wanna remove from 'someElementHDNToString' to make it an id for 'xxxxx'
    var equivalantComponentIDAsString = someElementToString.replace(toRemove,'');
    $('#' + equivalantComponentIDAsString ).attr('disabled', true);
    }
}

花了很多时间在上面做东西,好像没用。我是 java 脚本的新手,我在哪里错过它?

4

2 回答 2

1

如果您有一个 id 为 'fooHDN' 的元素,并且想要找到另一个 id 为 'foo' 的元素,那么您可以执行以下操作:

var otherElement = document.getElementById(someElement.id.replace(/HDN$/,''));

假设您已经拥有someElement并且它是一个 DOM 元素。

于 2012-12-04T04:18:40.347 回答
0

您发布的 js 代码有错误:div 没有“长度”,您的意思是“div.childNodes.length”吗?无论如何,既然您已经在使用 jQuery,我认为它可以变得更容易,如下所示: 已经测试并且工作正常。

$("#hiddenFields input[type='hidden'][id$='HDN']").each(
    function () {
        var elemId = this.id.replace(/HDN$/, '');
        $('#' + elemId).attr('disabled', this.value.toLowerCase() == 'false' ? false : true);
    }
);
于 2012-12-04T04:32:43.910 回答