我的命名惯例
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的satus为true / false, 并相应地将组件状态设置为禁用/启用.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);
}
}
投入大量时间上面的东西,doesent似乎工作。我是java scrcript的新手,我在哪里错过了它?
答案 0 :(得分:1)
如果你有一个id为'fooHDN'的元素,并且想要找到另一个id为'foo'的元素,那么你可以这样做:
var otherElement = document.getElementById(someElement.id.replace(/HDN$/,''));
假设您已经拥有someElement
并且它是一个DOM元素。
答案 1 :(得分: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);
}
);