如何比较两个函数中定义的两个javascript变量值

如何比较两个函数中定义的两个javascript变量值,javascript,jquery,html,Javascript,Jquery,Html,我有两个javascript函数,如下所示,其中wll计算textareas中的非空行 HTML: 输入设备列表(一行一个设备) 以十六进制输入LUN ID(一行一个ID) Javascript: function devscount() { devcounts = 0; var lines = $("#devs").val().split("\n"); for (var i = 0; i < lines.length; i++) { if (l

我有两个javascript函数,如下所示,其中wll计算textareas中的非空行

HTML:


输入设备列表(一行一个设备)
以十六进制输入LUN ID(一行一个ID)
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;
    }
}
函数devscont()
{
devcounts=0;
变量行=$(“#devs”).val().split(“\n”);
对于(变量i=0;i0)devcounts++;
}
}   
函数luncount()
{
luncounts=0;
变量行=$(“#lunids”).val().split(“\n”);
对于(变量i=0;i0)为++;
}
如果(devcounts==luncounts){
var message=“两个计数都匹配”;
}否则{
var message=“值之间不匹配”;
document.getElementById('error1')。innerHTML=message;
}
}
现在我想比较这两个文本区域的行数,如果它们相等和不相等,我需要显示一条消息。但是上面的脚本不适合我。当我回显document.getElementById('error1').innerHTML=devscont和
document.getElementById('error1')。innerHTML=luncounts在其相应的函数上,它完美地显示了行数。但我无法比较它们的价值。怎么做


JSFIDLE的问题不仅仅是这个问题。您尝试检查值的方式也存在问题。这两个文本区域在keyup上运行函数来计算其中的项目,但没有运行比较代码。我将它们都更改为运行第三个函数,
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;
}
var devcounts;
变异数;
函数devscount(){
devcounts=0;
变量行=$(“#devs”).val().split(“\n”);
对于(变量i=0;i0)devcounts++;
}
}   
函数luncount(){
luncounts=0;
变量行=$(“#lunids”).val().split(“\n”);
对于(变量i=0;i0)为++;
}
}
函数checkcounts(){
devscont();
luncount();
var消息;
如果(devcounts==luncounts){
message=“两个计数都匹配”;
}否则{
message=“值之间不匹配”;
}
document.getElementById('error1')。innerHTML=message;
}

JSFIDLE的问题不仅仅是这个问题。您尝试检查值的方式也存在问题。这两个文本区域在keyup上运行函数来计算其中的项目,但没有运行比较代码。我将它们都更改为运行第三个函数,
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;
}
var devcounts;
变异数;
函数devscount(){
devcounts=0;
变量行=$(“#devs”).val().split(“\n”);
对于(变量i=0;i0)devcounts++;
}
}   
函数luncount(){
luncounts=0;
变量行=$(“#lunids”).val().split(“\n”);
对于(变量i=0;i0)为++;
}
}
函数checkcounts(){
devscont();
luncount();
var消息;
如果(devcounts==luncounts){
message=“两个计数都匹配”;
}否则{
message=“值之间不匹配”;
}
document.getElementById('error1')。innerHTML=message;
}

让我吃惊的是,您编写了大量代码来完成一些非常简单的任务。我已在中替换了您的代码。单一功能

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);
}

还是我完全弄错了。

我觉得你写了很多代码来做一些非常简单的事情。我已在中替换了您的代码。单一功能

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);
}

或者我完全弄错了。

因为变量包含在函数中,所以它们彼此看不到,如果在2个函数之外声明它们,您可以比较它们,因为它们将位于相同的范围
if(devcounts()==luncounts())
将变量设置为全局变量,并在函数中设置其值。由于变量包含在函数中,因此它们不会相互看到,如果在两个函数之外声明它们,则可以对它们进行比较,因为它们将在相同的范围内
if(devcounts()==luncounts())
将变量设置为全局变量,并在函数中设置它们的值。如果我在第一个代码中输入值,它将显示相等的事件,而第二个文本区域为空。这是一个完全无关的问题。您需要去掉从文本区域内容创建的数组中的空字符串。看看我是否在第一个代码中输入值,它显示相等的事件,而第二个文本区域为空。这是一个完全无关的问题。您需要去掉从文本区域内容创建的数组中的空字符串。看,我已经尝试了第一种方法。但它并没有显示信息。请看这里:我已经修复了JSFIDLE中的内容。除了你这里的问题,还有一些其他问题,比如没有实际比较textarea keyup上的计数。这是一个工作版本。。。谢谢,成功了。我是否可以在两个框中输入数据之前隐藏消息?这里,只要我在第一列中输入值,就会显示错误消息,只需从第一个文本区域中删除
onkeyup
处理程序。您也可以对第二个文本区域使用
onchange
onblur
,因此它只在您离开时进行检查。我尝试了第一种方法。但它并没有显示信息。请看这里:我已经修复了JSFIDLE中的内容。除了你这里的问题,还有一些其他问题,比如没有实际比较textarea keyup上的计数。这是一个工作版本。。。谢谢,成功了。有没有我可以隐藏的消息