2017-05-02 27 views
1

コードを入力して確認し、その結果を表示できるテキストエリアがあります。私はJSで2つの関数を持っています:1.それはテキストエリアの入力であるコードです。2.テキストエリアからコードを取り出してチェックする関数です。私が欲しいものJavaScript文字列の挿入

function 1 (code as input) 
var searchInsert = function (nums, target) { 

    var start = 0; 
    var end = nums.length - 1; 

    var index = Math.floor((end - start)/2) + start; 

    if (target > nums[nums.length - 1]) { 

     index = nums.length; 
    } 
    else { 

     while (start < end) { 

      var val = nums[index]; 

      break; 
     } 
     if (val == target) { 
      result = index; 
     } 
     else if (target < val) { 

      end = index; 
     } 
     else { 

      start = index + 1; 
     } 

     index = Math.floor((end - start)/2) + start 
    } 
    return index; 

}; 


function 2(takes code from textarea and checks it) 
function what(nums, target) { 
      var s = "var nums = [1, 3, 5, 6]; var target = 5"; 
      var expression = searchInsert(); 
      //inject string in function 
      var result = eval(expression); 
      alert(result); 
     } 

は、それがnumstargetから値を取るように、第1関数に何とかvar s = "var nums = [1, 3, 5, 6]; var target = 5";を注入することです。どうやってやるの?

答えて

2

あなたは1つの関数を呼び出すとき、あなたはパラメータを記述する必要があります。

function what() { 
    var nums = [1, 3, 5, 6]; 
    var target = 5; 
    var expression = searchInsert(nums, target); 
     //inject string in function 
     var result = eval(expression); 
     alert(result); 
    } 

あなたが使用する必要があるDOMにアクセスする場合:getElementByIdを( 'にtextArea')のgetValue();

+0

これは、sもターゲットも最初の関数の値を持たないので、私には未定義のエラーが出ます。 sは、最初の関数のパラメータの値を文字列として保持します。 –

+0

var s = "var nums = [1,3,5,6]; var target = 5"; <----これは意味をなさないので、配列と文字列varを作成する必要があります。そのような文字列varではなくs – Ferus7

+0

です。最初の関数でもパラメータを初期化しない限り、私はすでにあなたのソリューションを試してみましたが、未定義です。 –