如何使用 innerHtml 正确插入 html?
How to insert html with innerHtml correct?
我想在我的 android WebView 中使用 ListView 并且我创建了 json
以将我的变量发送到 JavaScript
。它有效但是当我附加 html 与 innerHtml
我的页面如下所示,我在 Inspect Element
上看不到任何错误
Html代码:
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1" charset="utf-8">
<link rel="stylesheet" href="css/jquery.mobile-1.4.5.min.css">
<script src="js/jquery-1.11.2.min.js"></script>
<script src="js/jquery.mobile-1.4.5.min.js"></script>
</head>
<body onLoad="getDir()">
<div data-role="page" id="pageone" style="float:right !important">
<div data-role="main" class="ui-content" id="dir_list">
</div>
</div>
<div data-role="page" id="download" data-dialog="true">
<div data-role="main" class="ui-content">
<a href="#" class="ui-btn ui-btn-inline ui-shadow ui-corner-all ui-btn-inline ui-mini" data-rel="back">حذف</a>
<a href="#" class="ui-btn ui-btn-inline ui-shadow ui-corner-all ui-btn-inline ui-mini" data-rel="back">تغییر نام</a>
</div>
</div>
<script>
function fill_dir()
{
return AndroidFunction.list();
}
//-------------------
function getDir()
{
var text = fill_dir();
//alert(text);
document.getElementById('dir_list').innerHTML = "";
var obj = JSON.parse(text);
var txt = "<ul data-role=\"listview\" data-inset=\"true\">";
for (i = 0; i < obj.List.length; i++)
{
txt += "<li><a href=\"#\"><img src=\"images/letter2.png\"><h2>"+obj.List[i].DIR+"</h2></a><a href=\"#download\" data-transition=\"pop\" data-icon=\"gear\">Download Browser</a></li>";
}
document.getElementById('dir_list').innerHTML += txt+"</ul>";
}
</script>
</body>
</html>
document.getElementById('dir_list').innerHTML = txt+"</ul>";
问题在于 jQuery Mobile 如何处理您的新 HTML 元素。 JQuery 移动端动态添加属性标签。由于您在 jQuery Mobile 之后加载 HTML 片段,可怜的 jQuery Mobile 无法解析和修改它们。
您的解决方案是在 document.getElementById('dir_list').innerHTML = txt+"</ul>";
位之后简单地添加 $('#dir_list').enhanceWithin();
。就这么简单!这告诉 jQuery Mobile 查看您的新 HTML 并处理它。
REF:http://demos.jquerymobile.com/1.0rc2/docs/pages/page-scripting.html
我想在我的 android WebView 中使用 ListView 并且我创建了 json
以将我的变量发送到 JavaScript
。它有效但是当我附加 html 与 innerHtml
我的页面如下所示,我在 Inspect Element
Html代码:
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1" charset="utf-8">
<link rel="stylesheet" href="css/jquery.mobile-1.4.5.min.css">
<script src="js/jquery-1.11.2.min.js"></script>
<script src="js/jquery.mobile-1.4.5.min.js"></script>
</head>
<body onLoad="getDir()">
<div data-role="page" id="pageone" style="float:right !important">
<div data-role="main" class="ui-content" id="dir_list">
</div>
</div>
<div data-role="page" id="download" data-dialog="true">
<div data-role="main" class="ui-content">
<a href="#" class="ui-btn ui-btn-inline ui-shadow ui-corner-all ui-btn-inline ui-mini" data-rel="back">حذف</a>
<a href="#" class="ui-btn ui-btn-inline ui-shadow ui-corner-all ui-btn-inline ui-mini" data-rel="back">تغییر نام</a>
</div>
</div>
<script>
function fill_dir()
{
return AndroidFunction.list();
}
//-------------------
function getDir()
{
var text = fill_dir();
//alert(text);
document.getElementById('dir_list').innerHTML = "";
var obj = JSON.parse(text);
var txt = "<ul data-role=\"listview\" data-inset=\"true\">";
for (i = 0; i < obj.List.length; i++)
{
txt += "<li><a href=\"#\"><img src=\"images/letter2.png\"><h2>"+obj.List[i].DIR+"</h2></a><a href=\"#download\" data-transition=\"pop\" data-icon=\"gear\">Download Browser</a></li>";
}
document.getElementById('dir_list').innerHTML += txt+"</ul>";
}
</script>
</body>
</html>
document.getElementById('dir_list').innerHTML = txt+"</ul>";
问题在于 jQuery Mobile 如何处理您的新 HTML 元素。 JQuery 移动端动态添加属性标签。由于您在 jQuery Mobile 之后加载 HTML 片段,可怜的 jQuery Mobile 无法解析和修改它们。
您的解决方案是在 document.getElementById('dir_list').innerHTML = txt+"</ul>";
位之后简单地添加 $('#dir_list').enhanceWithin();
。就这么简单!这告诉 jQuery Mobile 查看您的新 HTML 并处理它。
REF:http://demos.jquerymobile.com/1.0rc2/docs/pages/page-scripting.html