2012-12-22 36 views
0

我想讓我的腳本只改變一個頁面上的元素樣式。我想也許最好的方法是檢測並查看頁面是否有唯一的ID(profile-advanced-details),如果有,則將其他ID(page-body)高度修改爲1500px。Javascript:如果一個類存在,我如何修改類的屬性?

我試過這個,但它似乎不工作...是我的語法錯誤?還是有更好的方法來做到這一點?

var wrap = document.getElementById("page-body"); 

if (!document.getElementsById('profile-advanced-details').length){ 
    return; //if profile-advanced-details doesn't exist, do nothing 
} 

else { 
    wrap.style.height = "1500px";//if it does exist, change the height of page-body 
} 

謝謝!

+0

如果(的document.getElementById( '輪廓先進-細節')。長度<= 0){} – algorhythm

回答

0

id s是獨特的。沒有這樣的方法,如document.getElementsById()。改爲使用document.getElementById(),它將返回指定的idnull的元素。

0

getElementById是單數,不是複數。你也不需要.length,因爲它意味着不同的節點。

if(document.getElementById('profile-advanced-details')) { 
    document.getElementById('page-body').style.height = "1500px"; 
} 

您可能還可以使用CSS,但前提是參考要素(「型材先進範圍」)爲目標之前(「頁體」)。這可能不是這裏的情況,但它是一個很好的把戲知道:

#profile-advanced-details + #page-body, 
    #profile-advanced-details + * page-body {height:1500px} 
/* the following may work in CSS4: */ 
!#page-body #profile-advanced-details, 
    !#page_body + #profile-advanced-details, 
    !#page_body + * #profile-advanced-details {height:1500px} 
$#page-body #profile-advanced-details, 
    $#page_body + #profile-advanced-details, 
    $#page_body + * #profile-advanced-details {height:1500px} 
#page-body! #profile-advanced-details, 
    #page_body! + #profile-advanced-details, 
    #page_body! + * #profile-advanced-details {height:1500px} 
#page-body$ #profile-advanced-details, 
    #page_body$ + #profile-advanced-details, 
    #page_body$ + * #profile-advanced-details {height:1500px} 
/* The different ones are partially because I don't remember the spec, 
      but mostly because it's changing */ 
0

你應該能夠做到

var wrap = document.getElementById("page-body"); 

if (document.getElementById('profile-advanced-details')){ 
    // profile-advanced-details does exist 
    wrap.style.height = "1500px"; 
} 

這工作,因爲「輪廓 - 高級 - 詳細信息」中的getElementById如果它不存在,將返回null,這意味着條件不計算爲真,其中的代碼不會被調用。

+0

因爲不幸的是我不能直接修改的HTML。我只能添加將在所有頁面上顯示的腳本和CSS。 – teeth

+0

在這種情況下,上述方法可行,但如果您有多個具有相同ID的元素,我認爲其他人提到您確實應該使用類名稱。然後你可以使用函數'getElementsByClassName'。但爲了記錄,如果您有多個具有相同ID的元素,則'getElementById'應該返回找到的第一個元素,但不要依賴於此,因爲它不應該完成。 – Ally

0

由於元素ID是唯一的,你倒是應該給你的元素的類名'profile-advanced-details',用document.getElementsByClassName檢查,如果一個與你提供的這個woiuld看起來像這樣的代碼存在

所以:

var wrap = document.getElementById("page-body"); 

if (document.getElementsByClassName('profile-advanced-details').length == 0){ 
    return; //if profile-advanced-details doesn't exist, do nothing 
} 

else { 
    wrap.style.height = "1500px";//if it does exist, change the height of page-body 
} 
0

你說班,對嗎?然後改變

  if (!document.getElementsById('profile-advanced-details').length) 

  if (!document.getElementByClass('profile-advanced-details').length) 
相關問題