2014-10-07 59 views
-4

我想更改特定頁面上的css類屬性,但我無法使其工作通過Javascript或php更改CSS類

我的代碼是這樣的。

if (is_page(877)) { 
    //change CSS Class 

} else if (is_page(970)) { 
    //change CSS Class 
} else { 
    // Same CSS 
} 

我試過所有這些insde的IFs,但沒有。

document.getElementById('header-aside').className = 'header-two-aside2'; 

document.getElementById('header-aside').classList.add('header-two-aside2'); 

$('#header-aside').removeClass('header-two-aside'); 

$('#header-aside').addClass('header-two-aside'); 

我該怎麼辦?

+0

is_page()返回什麼? – 2014-10-07 11:43:04

+0

而你不顯示你的HTML。 – Utkanos 2014-10-07 11:43:18

+1

PHP是一種服務器端編程語言。除非通過PHP提供/準備樣式表,否則不能改變CSS聲明。 – 2014-10-07 11:43:30

回答

1

你在做什麼似乎是正確的。你需要確保你的is_page函數完成正確的操作,並且只有在文檔對象準備就緒後才能運行你的css類操作。 您還沒有將此貼標記爲jquery帖子,但由於您在示例中使用了jquery,我還將使用jquery。

現場演示:
http://fiddle.jshell.net/ne842udn/

使用

$(document).ready(function(){}); 

,以確保您的文檔已準備好處理。

,並有一些標識符的地方告訴喜歡你的腳本你是(我在我的例子使用隱藏域)的頁面:

<input type="hidden" name="pageId" value="970" /> 

和像頁面標識:

function is_page(num){ 
    return $('input[name="pageId"][value="' + num + '"]').length > 0; 
} 

解決你的問題?解決你所問的所有問題;)
嘗試在小提琴的HTML部分的頂部將輸入字段的值更改爲其他樣式,例如877,然後在在頁面的左上角觀看div改變顏色的背景。

你可以讓你的服務器端PHP代碼直接設置類,但對於禁用了JavaScript的用戶可以工作(或者如果你不關心那些用戶,想想真正需要運行的客戶端side vs serverside ..客戶端腳本應該添加交互或者其他內容,而不僅僅是幫助懶惰的程序員風格頁面)

+0

感謝您的回答! 我想要的是,無論何時加載某個頁面,某個CSS類都會發生變化,因此它與頁面首選項兼容。從你的回答中,我看不出這對我有什麼幫助..:/ – Lambros 2014-10-07 12:53:14

+0

讓我們確保我們談論相同的網絡開發語言。我的意思是這樣的:加載一個頁面=請求從瀏覽器到你的網絡服務器,網絡服務器響應一個頁面(它被加載)。當你從你的服務器加載你的頁面時,你已經指定了一些讓你的客戶端代碼知道你正在瀏覽哪個頁面的東西(在我的例子中,我使用服務器爲此提供的隱藏字段,你可以使用查詢字符串,屬性或其他)。而且我還將您的頁面首選項作爲您服務器上定義的內容讀取,而不是用戶選擇的選項(例如切換主題)。 – Snellface 2014-10-07 12:57:19

+0

現在請解釋你想要它的工作方式:)(另外,你是否檢查我發佈的演示?你將不得不通過更改中的值並單擊運行按鈕來模擬加載不同的頁面) – Snellface 2014-10-07 12:58:49