2016-12-20 155 views
0

我有一些html內容,它從數據庫中獲取並粘貼到iframe中。 HTML內容是一樣的東西下面,從html獲取javascript變量

<html> 
<head></head> 
    <body style="background:#ffffff;"> 
<script>var el_list_obj = {'1_akdvf':{name:"test.png", width:"250px", height:"200px"},'2_akdvf':{name:"test2.png", width:"350px", height:"300px"}};</script> 
<img style="top: 0px; left: 1px; width: 250px; z-index: 1; height: 200px; opacity: 1; transform: rotate(0deg);" class="slide-elements" src="/media-files/test.png"> 
<img style="top: 0px; left: 1px; width: 350px; z-index: 1; height: 300px; opacity: 1; transform: rotate(0deg);" class="slide-elements" src="/media-files/test2.png"> 
</body> 
</html> 

我想用el_list_obj變量從腳本,如何獲取這個使用JavaScript或jQuery的?

我試過下面,

var doc = document.implementation.createHTMLDocument(); // Sandbox 
doc.body.innerHTML = rData['body_content']; 
var scriptElements = doc.getElementsByTagName('script'); 
var arrayScriptContents = [].map.call(scriptElements, function(el) { 
self.elWinDataObj = el.textContent; 
}); 

但它下面的返回我作爲一個字符串,

var el_list_obj = {'1_akdvf':{name:"test.png", width:"250px", height:"200px"},'2_akdvf':{name:"test2.png", width:"350px", height:"300px"}}; 

我想下面的JavaScript對象,

謝謝和問候,

Neha

+0

試試這個http://stackoverflow.com/a/6649090/3008050 – karan3112

+1

可以json.parse(el_list_obj) – Geeky

+1

@Geeky這不是有效的JSON。 – Barmar

回答

0

嘗試使用eval();

var b=`var el_list_obj = {'1_akdvf':{name:"test.png", width:"250px", height:"200px"},'2_akdvf':{name:"test2.png", width:"350px", height:"300px"}};`; 

eval(b); 

,您可以通過它的名稱訪問對象:

console.log(el_list_obj["1_akdvf"]); 
+0

切勿將'eval'用於沒有它的地方。 –

+0

是的,我同意。但在這種情況下,使用小數據並不是什麼大問題。但我並不是說你應該開始使用eval()。 –

0

如果你只是想不變量名的JSON對象,你可以試試這個。請注意,您需要對當前的JSON進行一些更改以將其存儲爲字符串。

$(document).ready(function(e){ 
 
\t var str = 'var el_list_obj = {"1_akdvf":{name:"test.png", width:"250px", height:"200px"},"2_akdvf":{name:"test2.png", width:"350px", height:"300px"}};' 
 
\t var out = iDontUseEval(str); 
 
\t console.log(out); 
 
}); 
 

 
function iDontUseEval(fn) { 
 
\t if(fn.startsWith("var")){ 
 
\t var evaluateThis = fn.substr(fn.indexOf("=")+1).trim() 
 
    \t return new Function('return ' + evaluateThis)(); 
 
\t } 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>