2014-10-08 53 views
0

使用JS,Jquery,Bootstrap 3.我沒有創建多個單獨觸發的模塊,而是編寫了一個腳本來填充基於正在嵌入的內容的模式,然後使用嵌入的內容填充模塊。我的JS if語句有什麼問題嗎?

莫代爾標記:

<div class="modal fade" id="ideasmodal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> 
<div class="modal-dialog modal-lg"> 
<div class="modal-content"> 
<div class="modal-header"><button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span> 
<span class="sr-only">Close</span></button> 
<h4 class="modal-title" id="myModalLabel"></h4> 
</div> 
<div class="modal-body" id="library-content"></div> 
</div> 
</div> 
</div> 

觸發器:

<a data-frame="http://path.to.url" data-content="embed" class="btn btn-primary modaltrigger" role="button">Learn More</a> 
<a data-frame="http://path/to/image.png" data-content="image" class="btn btn-primary modaltrigger" role="button">Learn More</a> 

JS

$(document).ready(function(){ 
$(".modaltrigger").click(function(){ 
    var dataContent = this.getAttribute("data-content"); 
    if (dataContent = "embed") { 
     var modalClass = 'embed-responsive embed-responsive-16by9'; 
     var modalContent = this.getAttribute("data-frame"); 
     var modalBody = document.createElement("IFRAME"); 
     var embedContainer = document.createElement("DIV"); 
     embedContainer.setAttribute("class", modalClass); 
     modalBody.setAttribute("src", modalContent) 
     modalBody.setAttribute("class", "embed-responsive-item"); 
     modalBody.setAttribute("frameborder", "0"); 
     document.getElementById("library-content").appendChild(embedContainer); 
     embedContainer.appendChild(modalBody); 
     $('#ideasmodal').modal('show'); 
    } 
    else if (dataContent = "image") { 
     var modalContent = this.getAttribute("data-frame"); 
     var modalBody = document.createElement("IMG"); 
     modalBody.setAttribute("src", modalContent); 
     modalBody.setAttribute("class", "img-responsive"); 
     document.getElementById("library-content").appendChild(modalBody); 
     $('#ideasmodal').modal('show'); 
    } 
}); 
$(".close").click(function(){ 
    document.getElementById("library-content").innerHTML= ""; 
}); 
}); 

所以發生了什麼活動網站上,當我點擊與數據內容的鏈接=「image」,該網站仍在生成iframe,而不是直接嵌入if語句的圖像(ELSE)。這不是什麼大問題,除非我不想限制在bootstrap響應式嵌入類定義的比例 - 我的圖像並不總是適合4:3或16:9的比例。

我對JS很新,很抱歉,如果我失去了一些非常明顯的東西。我已經用控制檯/調試器運行了這個,除了toString不允許(我從這個網站的搜索中可以看到現在忽略它,因爲它是一個Flash問題)我沒有得到任何錯誤。

+6

當進行比較時'='應該是'==='......'='將設置變量 – smerny 2014-10-08 20:37:20

+0

考慮使用像http://jshint.com這樣的工具來幫助您找到常見錯誤。 – 2014-10-08 20:43:05

+0

我從來沒有見過這個網站。謝謝!它獲取了書籤 – user3366357 2014-10-08 20:50:02

回答

6

你只有1等於在這兩個你陳述

if (dataContent == "embed") { 
    //logic 
} else if (dataContent == "image") { 
    //logic 
} 
1

應該是==不是=。

if (dataContent == "embed") { 
    var modalClass = 'embed-responsive embed-responsive-16by9'; 
    var modalContent = this.getAttribute("data-frame"); 
    var modalBody = document.createElement("IFRAME"); 
    var embedContainer = document.createElement("DIV"); 
    embedContainer.setAttribute("class", modalClass); 
    modalBody.setAttribute("src", modalContent) 
    modalBody.setAttribute("class", "embed-responsive-item"); 
    modalBody.setAttribute("frameborder", "0"); 
    document.getElementById("library-content").appendChild(embedContainer); 
    embedContainer.appendChild(modalBody); 
    $('#ideasmodal').modal('show'); 
} 
else if (dataContent == "image") { 

=用於賦值==用於比較。