2017-01-29 5 views
0

この質問は、マウス座標と各テキストボックスのサイズに基づいて関数を作成するよう求めていますが、少なくとも1つの点マウスの始まりと終わりの線に触れています。すべての値を取得するのに問題があるmultiSelection関数を作成する

function multiSelection(dimensions, tasks, mouseCoordinates) { 
 
    var inDrag = []; 
 
    var width = dimensions[0]; 
 
    var height = dimensions[1]; 
 
    var spaceHeight = dimensions[2]; 
 

 
    if (mouseCoordinates[0][1] > mouseCoordinates[1][1]) { 
 
    var LineStart = mouseCoordinates[1][1]; 
 
    var LineEnd = mouseCoordinates[0][1]; 
 
    } else { 
 
    var LineStart = mouseCoordinates[0][1]; 
 
    var LineEnd = mouseCoordinates[1][1]; 
 
    } 
 

 
    var pos = 0 
 
    for (var i = 0; i <= tasks.length; i++) { 
 
    pos = pos + height + spaceHeight 
 
    if (LineStart < pos && pos < LineEnd) { 
 
     inDrag.push(tasks[i]); 
 
    } 
 
    } 
 
    return inDrag; 
 
} 
 

 
console.log(
 
    multiSelection(
 
    [135, 9, 1], 
 
    ["Task 1", "Task 2", "Task 3", "Very Important Task", "Not So Important Task", "Yet Another Task", "The last task"], 
 
    [ [132, 42], [35, 13] ] 
 
) 
 
);

+0

だから問題は何ですか? –

+0

タスク2 "、"タスク3 "、"非常に重要なタスク "、"それほど重要でないタスク "を返しますが、タスク2"、 "タスク3"、 "非常に重要なタスク"を返すだけのコードを実行すると、 –

+0

Canあなたはフィドルを作成しますか? –

答えて

0

私は可能なシナリオのためにあなたのコードをテストし、それをコメント。見てみましょう。 StackOverflowにとどまる価値のある質問をあなたが実際に聞いているかどうかはわかりませんが、とにかく入力に問題があります。

function multiSelection(dimensions, tasks, mouseCoordinates) { 
    var inDrag = []; 
    var width = dimensions[0]; // 135 
    var height = dimensions[1]; // 9 
    var spaceHeight = dimensions[2]; // 1 

    if (mouseCoordinates[0][1] > mouseCoordinates[1][1]) { // 42 > 13 = true 
    var LineStart = mouseCoordinates[1][1]; // 13 
    var LineEnd = mouseCoordinates[0][1]; // 42 
    } else { 
    var LineStart = mouseCoordinates[0][1]; // 42 
    var LineEnd = mouseCoordinates[1][1]; // 13 
    } 

    var pos = 0 
    for (var i = 0; i <= tasks.length; i++) { // 7 times 
    pos = pos + height + spaceHeight // pos + 9 + 1 
    if (LineStart < pos && pos < LineEnd) { 
     // 1st time: 13 < 10 && 10 < 42 
     // 2nd time: 13 < 11 && 11 < 42 
     // 3rd time: 13 < 12 && 12 < 42 
     // 4th time: 13 < 13 is false, end of possibilities! 
     inDrag.push(tasks[i]); 
    } 
    } 
    return inDrag; 
} 

console.log(
    multiSelection(
    [135, 9, 1], 
    ["Task 1", "Task 2", "Task 3", "Very Important Task", "Not So Important Task", "Yet Another Task", "The last task"], 
    [ [132, 42], [35, 13] ] 
) 
); 
関連する問題