2013-10-15 3 views
0

У меня есть две функции javascript, такие как ниже, которые будут подсчитывать непустые строки из текстовых областей.Как сравнить два значения переменной javascript, определенные в двух функциях

HTML:

<div id="map-devlist" > 
    <div class="block-with-text-area"> 
    <div class="input-quest-with-text-area">Enter your device list(one device in one line)</div> 
    <div class="input-resp-with-text-area"><span><textarea class="textarea" id="devs" name="devs" type="text" onkeyup="devscount();"></textarea></span> </div> 
    </div> 
</div> 

<div id="lunidlist" > 
    <div class="block-with-text-area"> 
     <div class="input-quest-with-text-area">Enter your LUN IDs in Hex(one ID in one line)</div> 
     <div class="input-resp-with-text-area"><span><textarea class="textarea" id="lunids" name="lunids" type="text" onkeyup="luncount();"></textarea></span> </div> 
    </div> 
</div> 

<div id="error1"></div> 

Javascript:

function devscount() 
{ 
    devcounts = 0; 
    var lines = $("#devs").val().split("\n"); 
    for (var i = 0; i < lines.length; i++) { 
     if (lines[i].length > 0) devcounts++; 
    } 
} 

function luncount() 
{ 
    luncounts = 0; 
    var lines = $("#lunids").val().split("\n"); 
    for (var i = 0; i < lines.length; i++) { 
     if (lines[i].length > 0) luncounts++; 
    } 

    if(devcounts == luncounts) { 
     var message ="both counts are matching"; 
    } else { 
     var message ="Mismatch between values"; 
     document.getElementById('error1').innerHTML=message; 
    } 
} 

Теперь я хотел бы сравнить количество строк на этих двух прокручиваемым, и если они равны и не равны мне нужно, чтобы отобразить сообщение. Но этот сценарий не работает для меня. Когда я повторяю document.getElementById('error1').innerHTML=devscount; и document.getElementById('error1').innerHTML=luncounts; на их соответствующей функции, он отлично показывает количество строк. Но я не могу сравнивать их ценности. как это сделать ?

JSFIDDLE SETUP

+1

Поскольку переменные включены в функции, они не будут видеть друг друга, если вы объявите их за пределами двух функций, вы можете сравнить их, так как они будут в одной области –

+0

'if (devcounts() = = luncounts()) ' – yakiang

+0

Сделать переменные глобальными и установить их значения внутри функций. –

ответ

2

Проблема с jsfiddle не только одни вопрос. Также возникла проблема с тем, как вы пытались проверить значения. В 2 текстовых областях выполнялись функции для подсчета элементов в них, при активации клавиатуры, но не для выполнения кода сравнения. Я изменил их обоих, чтобы запустить 3-ю функцию, checkcounts и модифицированный скрипт для этого ...

var devcounts; 
var luncounts; 

function devscount() { 
    devcounts = 0; 
    var lines = $("#devs").val().split("\n"); 
    for (var i = 0; i < lines.length; i++) { 
     if (lines[i].length > 0) devcounts++; 
    } 
} 

function luncount() { 
    luncounts = 0; 
    var lines = $("#lunids").val().split("\n"); 
    for (var i = 0; i < lines.length; i++) { 
     if (lines[i].length > 0) luncounts++; 
    } 
} 

function checkcounts() { 
    devscount(); 
    luncount(); 

    var message; 

    if(devcounts == luncounts) { 
     message ="both counts are matching"; 
    } else { 
     message ="Mismatch between values"; 
    } 

    document.getElementById('error1').innerHTML=message; 
} 

Working jsfiddle...

+0

Я пробовал первый метод. но он не показывает сообщение. пожалуйста, посмотрите здесь: http://jsfiddle.net/NgGAZ/4/ – acr

+0

Я исправил то, что у вас было в jsfiddle. Как и ваш вопрос здесь, было еще несколько вопросов, например, не сравнение фактических значений с клавиатурой textarea. Вот рабочая версия ... http://jsfiddle.net/NgGAZ/7/ – Archer

+0

спасибо, что это сработало. Есть ли в любом случае я могу скрыть сообщение до тех пор, пока я не введу данные в оба поля? здесь, как только я ввожу значение в первый столбец, он показывает сообщение об ошибке – acr

2

Это меня поражает, что вы пишете очень много кода, чтобы сделать что-то Очень просто. Я заменил ваш код на this fiddle. Одна функция

function testCounts() 
{ 
var devCounts = $('#devs').val().split('\n').length; 
var lunCounts = $('#lunids').val().split('\n').length; 
var equals = (devCounts == lunCounts)?'Equal':'Not Equal'; 
$('#error1').text(equals); 
} 

Или я получаю это совершенно неправильно.

+0

если я поместил значение в первый код, он будет отображаться равным, хотя вторая текстовая область пуста. – acr

+0

Это совершенно несвязанная проблема. Вам нужно разбить пустые строки в массиве, созданном из содержимого текстовой области. См. [Эта скрипка] (http://jsfiddle.net/NgGAZ/6/) – DroidOS

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