Диалог Dojo для всплывающего окна с изображением и текстом
Я пытаюсь создать диалог, который показывает текст и изображение, используя виджет диалога dojo, всякий раз, когда я передаю детали изображения через innerhtml
всплывающее окно не появляется ни для текста, ни для изображения.
Он хорошо работает для деталей текста, но детали изображения не отображаются. Я включил свой код ниже:
HTML:
<div data-dojo-type="dijit.Dialog" title="SUB Details"
style="width: 500px; height: 150px; display:none;
id="subDetailDialog"
data-dojo-id="kycDetailDialog">
<br>
<table border ='0px' align='center' width='400' class='detailedInfo' id='detailedInfo' >
<tr class='even'>
<td style="width:40%"><strong>First Name</strong></td><td><strong>:</strong></td>
<td id='firstNameRow' style="width:40%"></td>
</tr>
<tr class='odd'>
<td><strong>Date of birth</strong></td><td><strong>:</strong></td>
<td id='dobRow'></td>
</tr>
<tr class='even'>
<td><strong>Subscriber Image</strong></td><td><strong>:</strong></td>
<td id='imgRow'></td>
</tr>
</table>
</div>
Javascript:
dojo.byId("firstNameRow").innerHTML = data.firstName;
dojo.byId("dobRow").innerHTML = data.dob;
dojo.byId("imgRow").innerHTML = '<img src="/images/123456789_.jpg" border="0" width="32" height="32"/>';
subDetailDialog.show();
3 ответа
В этом случае вы также можете использовать всплывающую подсказку Dojo для подключения всплывающего окна с изображением.
Док: https://dojotoolkit.org/reference-guide/1.10/dijit/Tooltip.html
<img id="image" src="myimage.jpg" height="200px" width="200px">
new Tooltip({
connectId: ["image"],
defaultPosition: "after",
label: 'TEXT ...'
});
Попробуй это. HTML:
<div data-dojo-type="dijit.Dialog" title="SUB Details"
style="width: 500px; height: 150px; display:none;
id="subDetailDialog"
data-dojo-id="kycDetailDialog">
<br>
<table border ='0px' align='center' width='400' class='detailedInfo' id='detailedInfo' >
<tr class='even'>
<td style="width:40%"><strong>First Name</strong></td><td><strong>:</strong></td>
<td id='firstNameRow' style="width:40%"></td>
</tr>
<tr class='odd'>
<td><strong>Date of birth</strong></td><td><strong>:</strong></td>
<td id='dobRow'></td>
</tr>
<tr class='even'>
<td><strong>Subscriber Image</strong></td><td><strong>:</strong></td>
<!-- CHANGED -->
<td><img src="" id='imgRow'></td>
</tr>
</table>
</div>
Javascript:
dojo.byId("firstNameRow").innerHTML = data.firstName;
dojo.byId("dobRow").innerHTML = data.dob;
// CHANGED
dojo.byId("imgRow").src="/images/123456789_.jpg";
dojo.byId("imgRow").style = "border: 0; height: 32px; width: 32px;";
subDetailDialog.show();
Я не знаю, где вы ошиблись, убедитесь, что изображение было успешно загружено (в консоли),
Другое дело, что вы должны позвонить data-dojo-id
идентификатор для отображения диалога kycDetailDialog
вместо subDetailDialog
,
ниже рабочего фрагмента, который может вам помочь (используя современное додзё AMD)
require(["dijit/Dialog", "dojo/dom","dojo/on","dijit/form/Button","dojo/ready","dojo/parser"],
function(Dialog,Dom,On,Button,ready,parser){
parser.parse();
ready(function(){
On(Dom.byId("btn"),"click",function(e){
kycDetailDialog.show();
});
//data you grab from ajax or other stuff ...
var data = {
firstName:"bRIMOs",
dob:"21/01/1989"
}
Dom.byId("firstNameRow").innerHTML = data.firstName;
Dom.byId("dobRow").innerHTML = data.dob;
Dom.byId("imgRow").innerHTML = '<img src="https://www.codeproject.com/KB/GDI-plus/ImageProcessing2/flip.jpg" border="0" width="32" height="32"/>'
kycDetailDialog.show();
});
}
);
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.11.3/dojo/dojo.js"></script>
<link href="//ajax.googleapis.com/ajax/libs/dojo/1.8.3/dijit/themes/claro/claro.css" rel="stylesheet"/>
<body class="claro">
<div data-dojo-type="dijit/form/Button" id="btn">Show subscriber info </div>
<div data-dojo-type="dijit/Dialog" title="SUB Details" style="width: 500px; height: 150px; display:none;" id="subDetailDialog" data-dojo-id="kycDetailDialog"><br>
<table border='0px' align='center' width='400' class='detailedInfo' id='detailedInfo'>
<tr class='even'>
<td style="width:40%"><strong>First Name</strong></td>
<td><strong>:</strong></td>
<td id='firstNameRow' style="width:40%"></td>
</tr>
<tr class='odd'>
<td><strong>Date of birth</strong></td>
<td><strong>:</strong></td>
<td id='dobRow'></td>
</tr>
<tr class='even'>
<td><strong>Subscriber Image</strong></td>
<td><strong>:</strong></td>
<td id='imgRow'></td>
</tr>
</table>
</div>
</body>
Вот скрипка, если вы хотите проверить код -> FIDDLE