Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以仅在特定DIV中设置超链接样式_Javascript_Css_Html - Fatal编程技术网

Javascript 是否可以仅在特定DIV中设置超链接样式

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

我正在制作一个纯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 + "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;
}