基本上,我想要做的是在用戶從選擇框中選擇一個選項時更改樣式表。要做到這一點,會有一個名爲$ _SESSION ['style']的變量。從選擇框中單擊時更改變量的最佳方法是什麼? (無需點擊提交按鈕)。是否有可能在不重新加載整個頁面的情況下更改樣式表?從選擇框中選擇選項時更改PHP變量
Thanksss! :)
基本上,我想要做的是在用戶從選擇框中選擇一個選項時更改樣式表。要做到這一點,會有一個名爲$ _SESSION ['style']的變量。從選擇框中單擊時更改變量的最佳方法是什麼? (無需點擊提交按鈕)。是否有可能在不重新加載整個頁面的情況下更改樣式表?從選擇框中選擇選項時更改PHP變量
Thanksss! :)
是的,你可以動態注入一個CSS文件,當選擇框更新。
<select onchange="changecss(this.value);">
...
</select>
<script>
function changecss(value){
//based on the value, pick a style sheet here
var cssname='pick your own css file';
csl=document.createElement('link');
csl.setAttribute('rel','stylesheet');
csl.setAttribute('type','text/css');
csl.setAttribute('href',cssname);
document.getElementsByTagName("head").item(0).appendChild(csl);
}
</script>
編輯:
我見過的代碼,直接改變當前的CSS列入src值。這在IE的某些版本中不起作用,因爲瀏覽器沒有「通知」DOM更改,因此您的頁面不受影響。在DOM中插入新的CSS節點的工作更可靠。
有了這個Ajax wrapper可以動態加載CSS文件中的一行:
<script src="http://www.antradar.com/nano.js"></script>
<script>
ajxcss(self.cssloader,'newcss.css');
</script>
由於PHP是不能在用戶的瀏覽器(沒有「推」)更新數據的服務器端語言,你需要客戶端腳本來更改樣式表,而不必重新加載頁面。使用javascript可以更改樣式表。因爲你的樣式表文件名存儲在(服務器端)會話變量,你有2種選擇:
但是,這可能是太多的開銷*。也許你應該考慮將樣式表文件名硬編碼到javascript中。
*)如果你正在使用像jQuery或MooTools的這樣的事情一個JavaScript框架,可以很容易地實現......
編輯:我剛剛認識到,你有項目的選擇框。在這種情況下,您肯定希望使用第一個選項:通過PHP創建選擇框,例如使用樣式表的文件名作爲值。當發生onSelectedIndexChanged
時,您可以使用javascript更改樣式表。
PHP是一種服務器端語言,所以如果您希望在使用選擇框(立即)時真正改變它,請使用Javascript。這是一個SO解決方案:http://stackoverflow.com/questions/14292997/changing-style-sheet-javascript –