javascript onclick create(element)div viz弹出框

时间:2012-07-18 13:43:13

标签: javascript events createelement

我正在尝试制作一个弹出框,单击一个按钮就会调用它,这是我到目前为止所做的.. http://jsfiddle.net/WGPhG/2/

4 个答案:

答案 0 :(得分:9)

这是一个实际上做你想要的小提琴 - http://jsfiddle.net/WGPhG/6/

<强> JS

function popUp(){
    var popup = document.createElement('div');
    popup.className = 'popup';
    popup.id = 'test';
    var cancel = document.createElement('div');
    cancel.className = 'cancel';
    cancel.innerHTML = 'close';
    cancel.onclick = function (e) { popup.parentNode.removeChild(popup) };
    var message = document.createElement('span');
    message.innerHTML = "This is a test message";
    popup.appendChild(message);                                    
    popup.appendChild(cancel);
    document.body.appendChild(popup);
}

备注

要在元素上设置类,请使用element.className而不是element.class。 对于cancel元素上的onclick事件处理程序,最好直接为onclick处理程序分配一个匿名函数,该函数可以满足您的需要,如上例所示。


编辑(更有效的方式)

这实际上是获得所需结果的好得多,因为每次弹出窗口时都不会有重新创建元素的开销。小提琴 - http://jsfiddle.net/WGPhG/7/

<强> CSS

.popup
{
    position:absolute;
    top:0px;
    left:0px;
    margin:100px auto;
    width:200px;
    height:150px;
    font-family:verdana;
    font-size:13px;
    padding:10px;
    background-color:rgb(240,240,240);
    border:2px solid grey;
    z-index:100000000000000000;
    display:none
}

.cancel
{
    display:relative;
    cursor:pointer;
    margin:0;
    float:right;
    height:10px;
    width:14px;
    padding:0 0 5px 0;
    background-color:red;
    text-align:center;
    font-weight:bold;
    font-size:11px;
    color:white;
    border-radius:3px;
    z-index:100000000000000000;
}

<强> HTML

<button onClick="openPopup();">click here</button>
<div id="test" class="popup">
    This is a test message
    <div class="cancel" onclick="closePopup();"></div>
</div>

<强> JS

function openPopup() {
    document.getElementById('test').style.display = 'block';
}

function closePopup() {
    document.getElementById('test').style.display = 'none';
}

答案 1 :(得分:1)

JSFiddle

上尝试此更新

已更改:

  1. 中心页面(已修复)。
  2. 效果(fadein和fadeout)
  3. HTML

    <button onClick="openPopup();">click here</button>
    <div id="test" class="popup" style="display:none;">
        This is a test message
        <div class="cancel" onclick="closePopup();"></div>
    </div>
    

    CSS

    .popup {
        position:fixed;
        top:0px;
        left:0px;
        bottom:0px;
        right:0px;  
        margin:auto;
        width:200px;
        height:150px;
        font-family:verdana;
        font-size:13px;
        padding:10px;
        background-color:rgb(240,240,240);
        border:2px solid grey;
        z-index:100000000000000000;
    }
    
    .cancel {
        display:relative;
        cursor:pointer;
        margin:0;
        float:right;
        height:10px;
        width:14px;
        padding:0 0 5px 0;
        background-color:red;
        text-align:center;
        font-weight:bold;
        font-size:11px;
        color:white;
        border-radius:3px;
        z-index:100000000000000000;
    }
    
    .cancel:hover {
        background:rgb(255,50,50);
    }
    

    JS

    function openPopup() {
        //document.getElementById('test').style.display = 'block';
       $('#test').fadeIn(1000);
    }
    
    function closePopup() {
        //document.getElementById('test').style.display = 'none';
        $('#test').fadeOut(500);
    }
    

答案 2 :(得分:0)

我已更新您的Fiddle并使其正常运作。

更改后的HTML ...

 <button id="popupButton">click here</button>

更新了JavaScript ...

document.onreadystatechange = function () {
    function popUp() {
        var popup = document.createElement('div');
        popup.className = 'popup';
        popup.id = 'test';

        popup.innerHTML = "This is a test message";

        var cancel = document.createElement('div');
        cancel.className = 'cancel';
        cancel.onclick= function () { popup.destroy(); }
        popup.appendChild(cancel);

        document.body.appendChild(popup);
    }

    document.getElementById('popupButton').onclick = popUp;
}​

这是回答你的问题还是其他什么?

更新改进了代码和小提琴。现在打开和关闭作品

答案 3 :(得分:0)

试试这个

function popUp(){
    var popup = document.createElement('div');
    popup.className = 'popup';
    popup.id = 'test';
    var cancel = document.createElement('div');
    cancel.className = 'cancel';
    cancel.setAttribute('onClick', 'document.getElementById("test").parentNode.removeChild('+popup +');')

    popup.innerHTML = "This is a test message";
    document.body.appendChild(popup);
    popup.appendChild(cancel);
 }