1

複数の非表示フィールド (データ) を XML に挿入する必要があります。現在、一度に挿入できるデータは 1 つだけです。XML に挿入する「タイル」(複数の座標を含む) がいくつかあるとします。そのため、一度に 1 つの「タイル」(データ) しか XML に挿入できません。

<<==Javascript code==>>    

function moveIt(){ 

if (!moveEnabled||!MovableItem) return;

// display info during testing

X = MovableItem.offsetLeft;

Y = MovableItem.offsetTop;

W = MovableItem.offsetWidth;

H = MovableItem.offsetHeight;

document.getElementById('X').value = X;     
    document.getElementById('Y').value = Y;
    document.getElementById('W').value = W;
    document.getElementById('H').value = H;  

    document.form1.elements['X'].value;
    document.form1.elements['Y'].value;
    document.form1.elements['W'].value;
    document.form1.elements['H'].value;

    }

 <<==JSP codes==>>

 <form name='form1' action='UpdateXML.jsp' method='post'>

 <input type='hidden' name=source value="<%=src%>" />
 <input type='hidden' id="X" name="X" value="<%=X%>"/>
 <input type='hidden' id="Y" name="Y" value="<%=Y%>"/>
 <input type='hidden' id="W" name="W" value="<%=W%>"/>
 <input type='hidden' id="H" name="H" value="<%=H%>"/> 

 <button type="button" onclick="window.location.href='editcompany.jsp'">Back!</button>
 <button type="submit">Insert Into XML!</button>
 </form>

 <<==XML==>>

<%
try {

String X        = request.getParameter("X");
    String Y        = request.getParameter("Y");
    String W        = request.getParameter("W");
    String H        = request.getParameter("H");

    pw.println ( "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>"  );
    pw.println ( "<TemplateEditor>");
    pw.println ( "\t<Logo>");
    pw.print ( "\t\t<X_Coord>"); pw.print (X); pw.println ( "</X_Coord>");
    pw.print ( "\t\t<Y_Coord>"); pw.print (Y); pw.println ( "</Y_Coord>");
    pw.print ( "\t\t<Width>");   pw.print (W); pw.println ( "</Width>");
    pw.print ( "\t\t<Height>");  pw.print (H); pw.println ( "</Height>");
    pw.println ( "\t</Logo>");
    pw.println ( "</TemplateEditor>");

    pw.flush(); 
    pw.close();
    br.close();
    fw.close();
  } catch (Exception e) {}
%>

私を助けてくれる親切な魂がそこにいることを願っています!私は本当に本当に助けが必要です。どうもありがとう

編集:

function $(v){return document.getElementById(v)}

関数 startMove(e){

if (!MovableItem){return;}

canvas=isIE ? "BODY" : "HTML";

    activeItem=isIE ? event.srcElement : e.target;  

    offsetx=isIE ? event.clientX : e.clientX;

    offsety=isIE ? event.clientY : e.clientY;

    lastX=parseInt(MovableItem.style.left);

    lastY=parseInt(MovableItem.style.top);

    lastW=parseInt(MovableItem.style.width);

    lastH=parseInt(MovableItem.style.height);

if (offsetx+scrollAmt[0]>=(MovableItem.parentNode.offsetLeft+parseInt(MovableItem.style.left)+(MovableItem.offsetWidth*.98))|| offsety+scrollAmt[1]>=(MovableItem.parentNode.offsetTop+parseInt(MovableItem.style.top)+(MovableItem.offsetHeight*.98)) ){edge=true; MovableItem.style.cursor="se-resize"} else{edge=false;MovableItem.style.cursor="move"}

moveEnabled=true;

document.onmousemove=moveIt;

}

これは役に立ちますか?ありがとう

4

1 に答える 1

0

N MovableItems を処理するためのヒントと提案を次に示します (コードは現在のロジックに基づいています。

注: すべての JavaScript/JSP のベスト プラクティス (私が知っている) に従っているわけではなく、デモ目的のみです。

1.隠し入力フィールドを 1 つだけ使用して、すべての MovableItems 情報を保存できます (4xN の隠しフィールドを作成する代わりに)。この方法で処理する方が簡単です。

<input type='hidden' id="movableItems" name="movableItems" value="<%=value%>"/> 

2. N 個のアイテムをサポートするように moveIt() 関数を更新します。(すべてのアイテムの情報を含む MovableItems という配列があるとします)

function moveIt() {
    if (!moveEnabled || !MovableItems || MovableItems.length === 0) return;
    var value = '';
    for (var i = 0; i < MovableItems.length; i += 1) {
        if (i > 0) {
            value += '|';
        }
        value = [value, MovableItems[i].offsetLeft, ',',
                MovableItems[i].offsetTop, ',',
                MovableItems[i].offsetWidth, ',',
                MovableItems[i].offsetHeight].join('');
    }

    //the hidden field's value would be something like 10,20,50,50|5,5,30,20|1,2,60,20
    document.getElementById('movableItems').value = value;
}

UpdateXML.jsp 内

try {
    pw.println ( "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>"  );
    pw.println ( "<TemplateEditor>");

    String value = request.getParameter("movableItems");
    String[] items = value.split("\\|");
    int size = items.length;
    for (int i=0; i<size; i++) {
        String[] coords = items[i].split(",");
        pw.println ( "\t<Logo>");
        pw.print ( "\t\t<X_Coord>"); pw.print(coords[0]); pw.println ( "</X_Coord>");
        pw.print ( "\t\t<Y_Coord>"); pw.print(coords[1]); pw.println ( "</Y_Coord>");
        pw.print ( "\t\t<Width>");   pw.print(coords[2]); pw.println ( "</Width>");
        pw.print ( "\t\t<Height>");  pw.print(coords[3]); pw.println ( "</Height>");
        pw.println ( "\t</Logo>");
    }
    ...
} catch (Exception e) {}

これを行うには他にも多くの方法があると確信しています。これがあなたにいくつかのアイデアを与えることを願っています。


編集:

MovableItems 配列を作成/更新/削除する方法は次のとおりです。

var MovableItems = []; //create an empty array

MovableItem の作成/更新/削除を処理するための可能な実装

注: UI で生成されたときに、各 MovableItem に一意の ID を割り当てることを前提としています。

function getItem(items, id) { //helper function for getting item from array by id
    for (var i = items.length; i >= 0; i -= 1) {
        if (items[i].id === id) {
            return i;
        }
    }
    return -1;
}

function updateMovable(MovableItem) {
    var index = getItem(MovableItems, MovableItem.id);
    if (item < 0) { //it's a new item
        MovableItems.push(MovableItem);
    } else { //it's an existing item
        MovableItems[index] = MovableItem;
    }
}

function deleteMovableItem(MovableItem) {
    var index = getItem(MovableItems, MovableItem.id);
    if (index) {
        MovableItems.splice(index, 1);
    }
}
于 2012-08-16T03:31:29.030 に答える