2014-12-18 4 views
1

Я немного застреваю, пытаясь разобраться, как обойтись с помощью eval(). В основном нужно использовать строку ниже в моем коде, однако наличие кавычек, кажется, гадость это и так мой путь вокруг него было, чтобы Eval мой оригинальный вар ...Это плохое использование eval()

$("input").click(function(event) { 
    layerClicked = event.target.value; 
    layerClicked = eval(layerClicked); 

     if (map.hasLayer(layerClicked)) { 
      map.removeLayer(layerClicked); 
     } 
     else{ 
      map.addLayer(layerClicked); 
     } ; 
}); 

Является ли это законное и приемлемое использование eval или я пропустил что-то более основное?

Заранее спасибо, функция Роуон

+1

Я собираюсь изменить значение атрибута 'event.target' в моем браузере. –

+0

«eval is evil», чего именно вы пытаетесь достичь? –

+0

Im работает с leaflet.js api и по щелчку флажка Im, удаляя или добавляя слой с или на карту. Поэтому при щелчке я получаю значение флажка и использую это в своем операторе remove, проблема в том, что ему не нравятся кавычки ... – rowanwins

ответ

0

Eval() оценивает или выполняет аргумент.

Если аргумент является выражением, eval() оценивает выражение. Если аргумент является одним или несколькими операторами JavaScript, eval() выполняет инструкции.

Я не знаю, что вы пытаетесь достичь, но так, что layerclicked, кажется, не математическое выражение, ни ломоть Javascript заявление, вы делаете это неправильно ...

2

Я предполагаю, что вы пытаясь получить доступ к глобальному значению переменной при нажатии на ввод. Альтернативой этому было бы размещение всех этих значений, которые вы хотите получить в объекте. Таким образом, вы можете использовать обозначение скобки для доступа к ним, и eval не понадобится.

var layers = { 
    a: 'a value', 
    b: 'b value', 
    c: 'c value' 
}; 

$("input").click(function(event) { 
    var layerClicked = event.target.value; 
    alert(layers[layerClicked]); 
}); 

FIDDLE:http://jsfiddle.net/rqo6tcy4/

+0

Привет, Гильерме. Кажется, это то, что я хочу сделать, спасибо за вашу помощь! – rowanwins

+0

Да, вам нужно получить некоторое свойство идентификатора для ваших слоев, соответствующее значениям флажков. Затем используйте этот идентификатор, чтобы найти правильный слой для удаления. – Collierre

Смежные вопросы