当使用查询字符串时,我如何应用css
How can i apply css when a query string is used?
我想做的是(在正文末尾)检查查询字符串,并根据它的内容应用css。
www.example.com什么都不做
www.example.com/example--location/example.html?主题=红色将添加"红色"css
www.example.com/example-path/example2.html?主题=黄色将通过"黄色"css
此外,如果可能的话,当他们点击链接/选项卡时,我需要主题跟随他们到我网站上的其他URL。
使用Javascript函数检索qs参数window.location.search,然后解析它们以检查您想要的参数是否存在,然后使用getElementById更改HTML中的样式表引用。
您至少需要JavaScript。
首先,您需要一个可以读取URL中变量的函数:
function getQueryVariable(variable) {
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i=0;i<vars.length;i++) {
var pair = vars[i].split("=");
if(pair[0] == variable){
return pair[1];}
}
return(false);
}
现在假设您想要更改id为element1
的元素的css
if(getQueryVariable("theme") == "red") {
document.getElementById("element1").className = "redClass";
} elseif(getQueryVariable("theme") == "yellow") {
document.getElementById("element1").className = "yellowClass";
}
当然,您需要首先创建css类(在本例中为redClass
和yelloClass
),但这几乎就是它的工作方式。
编辑:根据OP的要求,这里有一个工作演示。JsFiddle显然不喜欢GET参数,所以只需将其复制到html文件中,自己尝试一下。?theme=red
将使文本变为红色。?theme=yellow
将使文本变成黄色。
<style>
.redClass {
color: red;
}
.yellowClass {
color: yellow;
}
</style>
<div id="element1">This is a test</div>
<script>
function getQueryVariable(variable) {
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i=0;i<vars.length;i++) {
var pair = vars[i].split("=");
if(pair[0] == variable){
return pair[1];}
}
return(false);
}
if(getQueryVariable("theme") == "red") {
document.getElementById("element1").className = "redClass";
} else if(getQueryVariable("theme") == "yellow") {
document.getElementById("element1").className = "yellowClass";
}
</script>
您需要一个函数来解析location.search
属性中的URL参数(查询字符串);然后,一旦有了参数,就将该类应用于<body>
标记。
function getUrlParameters() {
var params = {};
if (location.search) {
var parts = location.search.substring(1).split('&');
for (var i = 0; i < parts.length; i++) {
var nv = parts[i].split('=');
if (!nv[0]) continue;
params[nv[0]] = nv[1] || true;
}
}
return params;
}
$(document).ready(function() {
var theme = getUrlParameters().theme;
if (theme)
$("body").addClass(theme);
});
相关文章:
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- Emberjs应用程序加载在除Index之外的所有路由上
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 跟踪在页面加载时应用内联样式的JavaScript
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- 如果文本字段为空,则使用JavaScript应用CSS样式
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 为什么在单独的函数中应用时转换会闪烁/断断续续(D3)
- angular 1.5应用程序中的导航栏
- 在Web应用程序中使用Highcharts javascript
- angularjs+rails应用程序中未显示模板
- 从html创建一个指令,该指令按类名应用函数
- 使用acess代币登录Facebook,并通过网络应用程序离线发布
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- 科尔多瓦页面类应用程序中的多个谷歌地图
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- Angularjs-utils高亮过滤器在搜索时破坏应用程序
- 在phonegap应用程序内部重定向不起作用
- 使用谷歌应用程序脚本从工作表中获取值并将其显示在文本框中