繁体   English   中英

javascript修改元素的样式

[英]javascript modify style of an element

作为javascript的新手,我正在尝试编写一个函数,该函数可以在用户单击的任何位置向页面添加黄色div(如便利贴)。 事件处理似乎很好,但是某种程度上我想要的样式属性没有应用。 这是我的脚本:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<script type="text/javascript"> 
function get_position(e){
    //ie
    if(document.all){
        curX = event.clientX;
        curY = event.clientY;
    }
    //netscape 4
    if(document.layers){
        curX = e.pageX;
        curY = e.pageY;
    }
    //mozilla
    if(document.getElementById){
        curX = e.clientX;
        curY = e.clientY;
    }
}

function new_div(pobj,e){
    get_position(e);
    newdiv=document.createElement("div");
    newdiv.style.position="absolute";
    newdiv.style.left=curX+'px';
    newdiv.style.top=curY+'px';
    newdiv.style.color="yellow";
    document.body.appendChild(newdiv);
//  alert("new div");
}
</script>
</head>
<body onmousedown="new_div(this,event);">
</body>

</html>

您正在创建的div没有大小,因此即使其余代码按要求工作也不会显示。 然后,一旦您给它一个大小,就没有内容了,因此您仍然可能看不到它。

color样式属性适用于div中的文本,并且您没有文本,因此看不到任何黄色。 如果要使用黄色块,则应使用.style.backgroundColor = "yellow"将背景色设置为黄色(设置大小后)。

一些基本的演示:

window.onclick = function ( e ) {
    if ( e.target.className === 'postit' ) { return; }
    var div = document.createElement( 'div' );
    div.contentEditable = true;
    div.className = 'postit';
    div.style.left = e.clientX + 'px';
    div.style.top = e.clientY + 'px';
    document.body.appendChild( div );
};

现场演示: http : //jsfiddle.net/4kjgP/1/

如果要添加黄色div,您可能实际上是在考虑添加黄色的div? 您使用的代码应使其中的文本变为黄色。 如果您希望bg为黄色,请改用style.backgroundColor。 也给div一些宽度和高度,或者给它一些内容,否则它可能会显示出来。

内部没有内容且没有尺寸的<div>通常会被浏览器渲染跳过。 您可能还需要在其中放入另一个元素(例如带有lorem ipsum的<p> )以查看出现的内容。

要进行实时编辑和使用,请查看JSFiddle

这也没有做您想要的。 设置颜色将使文本变为黄色,而不是便利贴效果。 为此,请使用背景。 查看此重新设计的解决方案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM