2015-12-22 46 views
0

在我的HTML中,我有4個框,我想要增加大小並通過onclick顯示在網站中間。但它不適用於這個克隆版本。通過onclick克隆div和更改樣式

function changeSize(id, weight, height){ 
 
\t //$("." + id).clone().appendTo("new" + id); 
 
\t var elem = document.getElementById(id); 
 
    clone = elem.cloneNode(true); // true means clone all childNodes and all event handlers 
 
\t clone.id = "newid" +id; 
 
\t document.body.appendChild(clone); 
 
\t  
 
    
 
    if(elem.getAttribute('style')){ 
 
     elem.removeAttribute('style'); 
 
    } else { 
 
     elem.style.width = weight + 'px'; 
 
     elem.style.height = height + 'px'; 
 
     elem.style.fontSize = '30px'; 
 
     
 
     elem.style.position = 'absolute'; 
 
     elem.style.left= '40%'; 
 
    } 
 
} 
 

 
var elems = document.getElementsByClassName('kaesten'); 
 
for(var i = 0; i < elems.length; i++){ 
 
    elems[i].onclick = function(){ 
 
     changeSize(this.id, 600, 600); 
 
    } 
 
}
.kaesten{ 
 
\t width:240px; 
 
\t height:300px; 
 
\t background-color:darkgrey; 
 
\t background-position:center; 
 
\t background-repeat:no-repeat; 
 
\t text-shadow:0px 0px 3px #000; 
 
\t border: 5px solid #F0F8ff; 
 
\t vertical-align:top; 
 
\t text-shadow: 3px 3px 4px #777; 
 
\t float:left; 
 
\t margin-left:30px; 
 
}
<div id="box1" class="kaesten">test1</div> 
 
<div id="box2" class="kaesten">test2</div> 
 
<div id="box3" class="kaesten">test3</div> 
 
<div id="box4" class="kaesten">test4</div>

問:我怎樣才能通過的onclick克隆盒,並顯示在網站的中間?如何通過onclick刪除它?

+0

克隆:您必須複製對象的狀態,這可以通過枚舉和複製其屬性或通過從「排序藍圖」中創建對象來完成。要將它移動到網站的中間,請修改其CSS屬性,即TOP和LEFT,並通過onclick將其刪除,只需添加一個事件偵聽器並將其從DOM中的父級刪除即可 –

+0

您需要使用純JavaScript或jQuery可以用嗎? –

+1

@nolags:你在找這樣的東西 - https://jsfiddle.net/abhitalks/0tx5do9w/? – Abhitalks

回答

1

您可以修改CSS與jQuery的css()方法: 來源:http://api.jquery.com/css/

要設置一個指定的CSS屬性,請使用以下語法:

CSS( 「PROPERTYNAME」, 「價值」 );

$(document).ready(function() { 
 
    $('.kaesten').click(function() { 
 
    $('.kaesten').removeAttr('style'); 
 
    
 
    var id = $(this).attr('id'); 
 
    $('#' + id).css({ 
 
     "width": "30em", 
 
     "height": "18em", 
 
     "top": "50%", 
 
     "left": "50%", 
 
     "position": "fixed", 
 
     "margin-top": "-9em", 
 
     "margin-left": "-15em", 
 
     "background-color": "blue" 
 

 
    }); 
 

 
    }); 
 
});
.kaesten { 
 
    cursor: pointer; 
 
    width: 240px; 
 
    height: 300px; 
 
    background-color: darkgrey; 
 
    background-position: center; 
 
    background-repeat: no-repeat; 
 
    text-shadow: 0px 0px 3px #000; 
 
    border: 5px solid #F0F8ff; 
 
    vertical-align: top; 
 
    text-shadow: 3px 3px 4px #777; 
 
    float: left; 
 
    margin-left: 30px; 
 
    color: #fff; 
 
    font-family: 'helvetica'; 
 
} 
 
.container { 
 
    position: relative; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<div class="container"> 
 
    <div id="box1" class="kaesten">test1</div> 
 
    <div id="box2" class="kaesten">test2</div> 
 
    <div id="box3" class="kaesten">test3</div> 
 
    <div id="box4" class="kaesten">test4</div> 
 
</div>

+1

如果你不明白這個問題,那麼一個評論比代表收集竊取更合適 –

+0

對不起,我修改了我的答案。 –

+0

不需要向我道歉,我不會對你的回答有個人感受。我只是讓你知道,因爲你最初表示你不明白這個問題,我不知道如何修改你的答案會改變這個問題。 –

0

如果你只是需要把股利在中上單擊它應該回到原來的位置。嘗試這個代碼,不需要jQuery的。

function changeSize(id, weight, height){ 
 
\t var elem = document.getElementById(id); \t 
 
\t if(elem.className == 'absoluteclass'){ 
 
\t elem.setAttribute('class','kaesten'); 
 
\t }else{ \t   
 
\t var currentAbsoluteElem = document.getElementsByClassName('absoluteclass'); 
 
\t if(currentAbsoluteElem.length > 0){ 
 
\t \t console.log(currentAbsoluteElem[0]) 
 
\t \t currentAbsoluteElem[0].setAttribute('class','kaesten'); 
 
\t } 
 
\t var elem = document.getElementById(id); 
 
\t elem.setAttribute('class','absoluteclass'); 
 
\t /* for making the height , width dynamic you can change it from here 
 
      elem.style.width = weight + 'px'; 
 
      elem.style.height = height + 'px'; 
 
      elem.style.left= '40%'; 
 
\t */ 
 
\t } 
 
} 
 

 
var elems = document.getElementsByClassName('kaesten'); 
 
for(var i = 0; i < elems.length; i++){ 
 
    elems[i].onclick = function(){ 
 
     changeSize(this.id, 600, 600); 
 
    } 
 
}
.kaesten{ 
 
\t width:240px; 
 
\t height:300px; 
 
\t background-color:darkgrey; 
 
\t background-position:center; 
 
\t background-repeat:no-repeat; 
 
\t text-shadow:0px 0px 3px #000; 
 
\t border: 5px solid #F0F8ff; 
 
\t vertical-align:top; 
 
\t text-shadow: 3px 3px 4px #777; 
 
\t float:left; 
 
\t margin-left:30px; 
 
} 
 
.absoluteclass{ 
 
    position:absolute; 
 
    background-color:darkgrey; 
 
    width:600px; 
 
    height:600px; 
 
    left:calc(50% - 300px); 
 
    
 
}
<div id="box1" class="kaesten">test1</div> 
 
<div id="box2" class="kaesten">test2</div> 
 
<div id="box3" class="kaesten">test3</div> 
 
<div id="box4" class="kaesten">test4</div>

沒有需要克隆的股利,如果你仍然需要克隆的股利,我們可能需要更改代碼accordingly.You可以檢查的jsfiddle here

+0

onlicked方框的位置可以是空的,但當其他方框填滿時我認爲它看起來不太好。 – nolags

+0

好的,會相應地更新代碼。 –

0

更新的代碼:希望這是你要找的:)

function changeSize(id, weight, height){ 
 
    var elem = document.getElementById(id); 
 
\t var currentAbsoluteElem = document.getElementById('dummy'); 
 
    var text = elem.innerHTML; 
 
    currentAbsoluteElem.innerHTML = text; 
 
\t currentAbsoluteElem.style="display:block"; 
 
    /*Extra styling neeed to be done here*/ 
 
     
 
\t } 
 

 
var elems = document.getElementsByClassName('kaesten'); 
 
for(var i = 0; i < elems.length; i++){ 
 
    elems[i].onclick = function(){ 
 
     changeSize(this.id, 600, 600); 
 
    } 
 
} 
 

 
var absoluteCl = document.getElementsByClassName('absoluteclass'); 
 
absoluteCl[0].onclick = function(){ 
 
     console.log(document.getElementsByClassName('absoluteclass')) 
 
     document.getElementsByClassName('absoluteclass')[0].setAttribute('style','display:none'); 
 
}
.kaesten{ 
 
\t width:240px; 
 
\t height:300px; 
 
\t background-color:darkgrey; 
 
\t background-position:center; 
 
\t background-repeat:no-repeat; 
 
\t text-shadow:0px 0px 3px #000; 
 
\t border: 5px solid #F0F8ff; 
 
\t vertical-align:top; 
 
\t text-shadow: 3px 3px 4px #777; 
 
\t float:left; 
 
\t margin-left:30px; 
 
} 
 
.absoluteclass{ 
 
    position:absolute; 
 
    background-color:darkgrey; 
 
    width:600px; 
 
    height:600px; 
 
    left:calc(50% - 300px); 
 
    display:none; 
 
}
<div id="box1" class="kaesten">test1</div> 
 
<div id="box2" class="kaesten">test2</div> 
 
<div id="box3" class="kaesten">test3</div> 
 
<div id="box4" class="kaesten">test4</div> 
 
<div id="dummy" class="absoluteclass"></div>

+0

它不起作用。該框不能通過onclick打開。 – nolags

+0

它在上面的演示本身中工作,點擊任何一個框彈出一個新框。你是否要求任何其他點擊事件? –

+0

當我使用你的演示並點擊一個盒子時,沒有發生任何事情!我想要的是點擊一個盒子,這個盒子在頁面中間彈出,增加了大小和字體大小。其他箱子應該放在他們的地方,不要移動。 – nolags