-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 に設定し、それに応じてコンポーネントの状態を無効 / 有効に設定することです。Java スクリプトを使用します。

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 scrcript を初めて使用しますが、どこに行方不明ですか?

4

2 に答える 2

1

「fooHDN」のような ID を持つ要素があり、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 に答える