У меня есть 3 кнопки, которые по-разному объединяют вводимый текст:
var myTxtArea = document.getElementById('KWarea');
myTxtArea.value = myTxtArea.value.replace(/^\s*|\s*$/g, '');
var lines = $('#KWarea').val().replace(/\*/g, '').split('\n');
$('#produce').click(function () {
var endString = "";
myTxtArea.value = myTxtArea.value.replace(/^\s*|\s*$/g, '');
var lines = $('#KWarea').val().replace(/\*/g, '').split('\n');
for (var i = 0; i < lines.length; ++i) {
endString += '"*' + $.trim(lines[i]) + '*"' + ',' + '"* ' + lines[i] + ' *"' + ',';
// console.log(lines[i]);
}
var trimmedStr = endString.slice(0, -1);
$('#result1').html("ctx.keywords MATCHES (" + trimmedStr + ")");
$('#Strlength').html('Total string length: ' + trimmedStr.length);
});
$('#produce2').click(function () {
var endString = "";
for (var i = 0; i < lines.length; ++i) {
endString += '"*' + $.trim(lines[i]) + '*"' + ',';
}
var trimmedStr = endString.slice(0, -1);
$('#result1').html("ctx.keywords MATCHES (" + trimmedStr + ")");
$('#Strlength').html('Total string length: ' + trimmedStr.length);
});
$('#produce3').click(function () {
var endString = "";
for (var i = 0; i < lines.length; ++i) {
endString += '"' + $.trim(lines[i]) + '"' + ',';
}
var trimmedStr = endString.slice(0, -1);
$('#result1').html("ctx.keywords MATCHES (" + trimmedStr + ")");
$('#Strlength').html('Total string length: ' + trimmedStr.length);
});
Я хотел бы не повторять снова и снова следующее:
$('#result1').html("ctx.keywords MATCHES (" + trimmedStr + ")");
$('#Strlength').html('Total string length: ' + trimmedStr.length);
Но trimmedStr
зависит от endString
, и я не могу провести рефакторинг без var undefined
Большое спасибо
lines
, которую используют два ваших обработчика кликов, но другие обработчики кликов создают свою собственную локальную переменную с тем же именем. Это действительно то, что вы имеете в виду, или это ошибка? - person jfriend00   schedule 21.06.2015