Javascript setAttribute()正在将函数的文本设置为href值
这个标题可能没有任何意义,下面是发生的事情。我正在尝试运行一个Javascript setAttribute()正在将函数的文本设置为href值,javascript,jquery,html,Javascript,Jquery,Html,这个标题可能没有任何意义,下面是发生的事情。我正在尝试运行一个onclick()函数,该函数将交换样式表以进行可视更改。我这样做的方式是replace()部分href值。具体来说,我正在将单词white更改为black,以便将href的值从styles black.css更改为styles-black.css 我这样做在jQuery中没有问题: $(".onoffswitch").click(function(){ if($('.onoffswitch-checkbox').is(':che
onclick()
函数,该函数将交换样式表以进行可视更改。我这样做的方式是replace()
部分href
值。具体来说,我正在将单词white更改为black,以便将href
的值从styles black.css
更改为styles-black.css
我这样做在jQuery中没有问题:
$(".onoffswitch").click(function(){
if($('.onoffswitch-checkbox').is(':checked') == false) {
$("#pagestyle").attr('href', function(i, blackCSS) {
return blackCSS.replace('white', 'black');
});
}
}))
我不是专家,所以这可能效率很低,但我仍在努力学习。
现在,当我尝试用vanilla JS复制它时,我得到了一些奇怪的结果。首先,这是我的代码:
document.getElementById("pagestyle").setAttribute("href", (function(i,blackCss) {
return blackCSS.replace("white", "black");
}))
运行它之后,我使用document.getElementById('pagestyle').getAttribute('href')跟踪它
检查href
的值,查看函数是否工作,以及…..这就是我得到的结果:
"function (i,blackCss) {
return blackCSS.replace("white", "black");
}"
以下是要素:
<link id="pagestyle" rel="stylesheet" type="text/css" href="function (i,blackCss) { return blackCSS.replace("white", "black"); }">
<link id="pagestyle" rel="stylesheet" type="text/css" href='css/styles-white.css'>
很明显我做错了什么。奇怪的是,如果我不检查自己,我会认为它有效!风格改变了。如果我使用Chrome/IE工具检查元素,我可以看到styles-black.css的样式正在应用!但是为什么它要在元素的属性中显示函数呢?那不可能是对的,不是吗?当然,我对任何想向我展示它是如何完成的人都持开放态度
编辑
以下是元素的初始状态:
<link id="pagestyle" rel="stylesheet" type="text/css" href="function (i,blackCss) { return blackCSS.replace("white", "black"); }">
<link id="pagestyle" rel="stylesheet" type="text/css" href='css/styles-white.css'>
您需要执行函数,并在末尾添加
()
document.getElementById("pagestyle").setAttribute("href", (function(blackCss) {
return blackCSS.replace("white", "black");
})(document.getElementById("pagestyle").href)) ;
您需要通过在末尾添加
()
来执行该函数
document.getElementById("pagestyle").setAttribute("href", (function(blackCss) {
return blackCSS.replace("white", "black");
})(document.getElementById("pagestyle").href)) ;
这是意料之中的,因为属性值只能是字符串,所以将函数转换为字符串 在vanilla js中,您可以这样做:
var el=document.getElementById(“页面样式”),
initial=el.getAttribute(“href”);
el.href=首字母替换(“白色”、“黑色”)代码>
这是意料之中的,因为属性值只能是字符串,所以您的函数将转换为字符串
在vanilla js中,您可以这样做:
var el=document.getElementById(“页面样式”),
initial=el.getAttribute(“href”);
el.href=首字母替换(“白色”、“黑色”)代码>
您。。。没有调用函数<代码>设置属性(“href”,(函数(i,blackCss){blah blah;})()代码>您不能仅仅用基本的JavaScript方法替换复杂的jQuery方法,并期望它能够正常工作。您可能需要pagestyle.href=pagestyle.href.replace(“白色”、“黑色”)代码>或什么的。你。。。没有调用函数<代码>设置属性(“href”,(函数(i,blackCss){blah blah;})()代码>您不能仅仅用基本的JavaScript方法替换复杂的jQuery方法,并期望它能够正常工作。您可能需要pagestyle.href=pagestyle.href.replace(“白色”、“黑色”)
或其他。blackCSS将是未定义的blackCSS假设是页面样式
的href值是的,这是未定义的,您指向此,我将修复它,感谢blackCSS将是未定义的blackCSS假设是页面样式
的href值是的,这是未定义的,您指向此,我将修复它,谢谢