#javascript #jquery #jquery-ui #flot
#javascript #jquery #jquery-пользовательский интерфейс #flot
Вопрос:
набрать и разместить — это два раздела, которые существуют в html-коде, вызывающем функцию. Я могу открыть их оба, но не могу встроить график с помощью plot в раздел ‘place’ после его открытия с помощью кнопки ‘Draw’. Это работает нормально, только когда я открываю оба окна изначально.
function abcd (dial,place,xrange){
var dial = conv(dial)
var xr = document.getElementById("xrange");
var yr = document.getElementById("yrange");
var gtype = document.getElementById("pattern");
xr.value = ""; yr.value = ""; gtype.value = "Line" ;
var place = conv(place);
$(dial).dialog("close");
$(dial).dialog("open");
$(place).dialog({
autoOpen: false,
show: 'Explode',
height: 500,
width: 450,
modal: true})
$(dial).dialog({
autoOpen: false,
show: 'Explode',
height: 300,
width: 350,
modal: false,
buttons :
{ "Draw" : function() {
$((place)).dialog("open");
$(function () {
//manipulate input values to plot data
$.plot(document.getElementById(plac2), [ {data:d1roe,label:"abc"},
{data:d1roa, label:"xyz"} ], {
series: {stack: 0},
xaxis: {ticks: ticks},
ticks: ticks
});
});
//function open(xyz) {$(xyz).dialog("open");}
function conv (myid) {
return ( '#' myid );
}
Комментарии:
1. Можете ли вы отформатировать свой код!! Кажется, не хватает некоторых ;
2. Это единственное место, где вы инициализируете jquery
dialog
в элементах place и dial? потому что вы можете попытаться закрыть или открыть, но в первый раз это будет сделано с параметрами по умолчанию … после этого они откроются с выбранными вами параметрами
Ответ №1:
Я нашел быстрое решение для этого. Проблема заключалась в том, что диалоговое окно откроется, но не будет обрабатываться flot, поскольку ему не удалось извлечь ширину и высоту диалогового окна. Итак, перед открытием диалога мы можем исправить высоту и ширину.
Указание высоты в таблице стилей html в моем случае не сработало.
$(dial).dialog({
autoOpen: false,
show: 'Explode',
height: 300,
width: 350,
modal: false,
buttons :
{ "Draw" : function() {
$(place).width(500); // can take this as an input as well
$(place).height(500);
$(place).dialog("open");
//ploting code
}})}
Ответ №2:
Главное, что вам нужно для работы flot, — это чтобы ваш div plac2 имел ширину и высоту и был видимым (т. Е. нарисованным на экране). Поэтому, прежде чем создавать график, попробуйте указать, имеет ли ваш div ширину и высоту:
var placeholder = document.getElementById(plac2);
alert($(placeholder).width() ',' $(placeholder).height());
//plotting code here
Дайте нам знать, что произойдет.
Комментарии:
1. Он показывает 0,0. Но я инициализировал, когда определял разделение, а также в приведенном выше коде.$(place).dialog({ AutoOpen: false, show: ‘Explode’, height: 500, width: 450,}) кстати, plac2 — это только место
2. Убедитесь, что в plac2 есть CSS visibility: visible и display:block, прежде чем выводить график, это может помочь.
3. Я тоже это сделал. Ничего не изменилось. Я смог получить диалоговое окно, когда вручную установил его высоту и ширину. Большое спасибо.
4. @Rohan, напишите ответ на свой собственный вопрос, и я бы проголосовал за вас!