2012-12-04 26 views
-3

我的命名約定Java腳本:得到字符串相當於一個元素ID的

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的薩特斯是真/假, 並設置相應的組件狀態以禁用/啓用。與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); 
    } 
} 

投入了大量的時間manupulatiing事情上面,doesent似乎工作。我是新來的java scrcript,我在哪裏錯過它?

+2

爲什麼用這個神奇數字10來初始化循環變量j? – Ramesh

+0

Ramesh這是一個小姐,當我在調試時,因爲沒有多次進入循環,我會編輯這個問題,謝謝 – Narayan

+0

另外,你可以使用jQuery嗎? – Ramesh

回答

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); 
    } 
); 
+0

嗨泰迪,你的代碼沒有處理問題,例如HDN在隱藏字段ID重複不止一次ID – Ramesh

+0

@Ramesh嗨,請注意,「id $ ='HDN'」意味着只有找到那些與HDN結尾,相同作爲正則表達式「/ HDN $ /」。所以它已經能夠處理重複的情況。 – Teddy

+0

明白了...感謝您的解釋。 – Ramesh

1

如果你有一個像「fooHDN」身份證的元素,想找到ID爲「富」,那麼你可以這樣做的另一個元素:

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

假設你已經有someElement,這是一個DOM元素。

相關問題