Javascript 是否可以仅在特定DIV中设置超链接样式
我正在制作一个纯javascript webapp(无JQuery),它在运行时生成所有内容。没有要加载的CSS文件,所有样式都由JS生成 例如:Javascript 是否可以仅在特定DIV中设置超链接样式,javascript,css,html,Javascript,Css,Html,我正在制作一个纯javascript webapp(无JQuery),它在运行时生成所有内容。没有要加载的CSS文件,所有样式都由JS生成 例如: function newParagraph(content,x,y,w,h) { var obj = document.createElement("div"); obj.style.position = "absolute"; obj.style.left = x + "px"; obj.style.top = y
function newParagraph(content,x,y,w,h)
{
var obj = document.createElement("div");
obj.style.position = "absolute";
obj.style.left = x + "px";
obj.style.top = y + "px";
obj.style.width = w + "px";
obj.style.height = h + "px";
obj.style.fontFamily = ..... some web font
obj.style.fontSize = "20px";
obj.style.fontWeight = "normal";
obj.style.fontVariant = "small-caps";
.... etc ....
obj.innerHTML = content;
return obj;
}
上面的函数将创建一个div对象,具有指定的大小和绝对位置,将设置字体样式并将段落内容放入innerHTML中
此内容可能包含对象
我知道我可以在页面css中设置超链接样式。我不想那样。我只想在特定DIV对象的范围内设置超链接样式。因此,不同的DIV对象将以不同的样式显示超链接
这可能吗?如果可能的话,怎么做?你可以用不同的方式来做,但默认情况下,这不是你应该内联做的事情 一种方法是用JavaScript模拟它
<a
href="/path/file.html"
onMouseOver="this.style.color='#0F0'"
onMouseOut="this.style.color='#00F'"
>YourLink</a>
也可以使用Html来实现。参见W3.org()的示例2.3
根据这些信息,您可以在方法中使用JavaScript设置样式或使用JavaScript设置OnMouse函数。好的,我找到了解决方案,但是如果有人有更好的想法,请发布答案,我会接受 这是:
function newParagraph(content,x,y,w,h)
{
var obj = document.createElement("div");
obj.style.position = "absolute";
obj.style.left = x + "px";
obj.style.top = y + "px";
.... etc ....
obj.innerHTML = content;
var childobj = obj.firstChild;
while(childobj)
{
if( childobj.href !== undefined ) // this has hyperlink
childobj.style.color = ..... hyperlink color ....
childobj = childobj.nextSibling;
}
return obj;
}
从脚本中设置href,对于特定href的样式,可以使用css属性选择器,如
a[href^="http://stackoverflow.com"] {
color: red;
font-family: calibri;
font-size: 24px;
text-decoration: none;
}
它确保只有href=”http://stackoverflow.com“是时尚的
好的,但问题是我得到的段落内容可能包含对象,也可能不包含对象。所以基本上,唯一的方法就是为DIV的内容中遇到的每一个设置样式?无法设置整个DIV内容的“本地”样式?@Sinisa选择器
diva{…}
应用于DIV中的元素。锚(没有HREF的元素)是不可见的,不需要内容,所以选择一个也不重要。@RobG,我的理解是选择器'DIV a'将为所有内容设置样式。虽然我需要为每个“div”分别设置“a”的样式,因为它会彼此不同。如果否决票会附带一条评论,并解释原因,那就太好了。它将帮助我改进未来的问题。名为newparation的函数不应该创建段落元素而不是div吗?;-)@RobG,你是对的,函数名有误导性。这里的段落并不是指HTML对象,而是从webapp的角度来看最终结果对最终用户来说是什么样子。一个“纯javascript”的web应用仍然可以使用CSS,而不是单独设置每个样式属性。至少创建一个setProps函数,该函数在对象中的一组属性和值上循环,以设置元素的属性,而不是每个属性一条语句。@RobG感谢您的输入,webapp仍将使用页面CSS来设置恒定的样式。在本例中,我需要显示不同的文本块,每个文本块都有自己的(随机)样式(其中还包括一个文本块中对象的超链接样式),谢谢,这是一个有趣的解决方案。
a[href^="http://stackoverflow.com"] {
color: red;
font-family: calibri;
font-size: 24px;
text-decoration: none;
}