Javascript条件语句调用

Javascript条件语句调用,javascript,Javascript,如何调用函数checkcolor(),该函数执行表的“详细信息”检查?checkcolor()中的if-else语句将在“details”为“M”时将元素的背景色返回为“蓝色”,否则返回粉红色(对于“F”)。当我尝试调用代码中所示的函数时,它将不起作用 JavaScript代码: //table var table = [ "Lyn", "22", "F", 1, 1, "May", "32", "F", 18, 1, "Sam", "27", "F", 1, 2, "Sham",

如何调用函数
checkcolor()
,该函数执行表的“详细信息”检查?
checkcolor()
中的if-else语句将在“details”为“M”时将元素的背景色返回为“蓝色”,否则返回粉红色(对于“F”)。当我尝试调用代码中所示的函数时,它将不起作用

JavaScript代码:

//table      
var table = [
"Lyn", "22", "F", 1, 1,
"May", "32", "F", 18, 1,
"Sam", "27", "F", 1, 2,
"Sham", "23", "F", 2, 2,
"Hrs", "22", "M", 13, 2
];

// function calling starts here..

            for ( var i = 0; i < table.length; i += 5 ) {

                var element = document.createElement( 'div' );
                element.className = 'element';

                var number = document.createElement( 'div' );
                number.className = 'number';
                number.textContent = (i/5) + 1;
                element.appendChild( number );

                var symbol = document.createElement( 'div' );
                symbol.className = 'symbol';
                symbol.textContent = table[ i ];
                element.appendChild( symbol );

                var details = document.createElement( 'div' );
                details.className = 'details';
                details.innerHTML = table[ i + 1 ] + '<br>' + table[ i + 2 ];
                element.appendChild( details );
                element.CheckColour(details);  /*help me check this */

                /*CheckColour function, help me check this too if there is any error*/
                function CheckColour()
                {
                  var element, number, symbol, details;

                  if(details == "M")
                  element.style.backgroundColor = 'rgba(0,191,255,0)';
                  else
                  element.style.backgroundColor = 'rgba(255,105,180,0)';
                }
//表
变量表=[
“林”、“22”、“F”、1、1、,
“5月”、“32日”、“F日”、18日、1日、,
“山姆”、“27”、“F”、1、2、,
"Sham,"23,"F,2,2,,
“小时”,“22”,“米”,13,2
];
//函数调用从这里开始。。
对于(变量i=0;i'+表[i+2];
元素。追加子元素(详细信息);
元素。检查颜色(细节);/*帮我检查一下*/
/*CheckColor功能,如果有任何错误,请帮助我检查此功能*/
函数checkcolor()
{
变量元素、编号、符号、详细信息;
如果(详细信息=“M”)
element.style.backgroundColor='rgba(0191255,0)';
其他的
element.style.backgroundColor='rgba(255105180,0)';
}

您的函数不是
元素的方法,因此您不应该在
元素
上调用它。而是将
元素
也传递给函数

另外,
details
是一个DOM元素,因此它不能等于
“M”
。可能需要将
表[i+2]
“M”
进行比较

你可以这样做:

CheckColour(element, table[i+2]);

function CheckColour(element, details) {
    element.style.backgroundColor = 
        details == "M" ? 'rgba(0,191,255,0)' : 'rgba(255,105,180,0)';
}
这将使用作为
if…else
语句的替代,因为
if
的两个块都对同一属性执行赋值


确保将
函数
定义移出循环。它只需要定义一次。

如何将函数提取出来,并为其提供适当的变量以执行操作

function CheckColour(element, details) {
    if(details == "M")
    element.style.backgroundColor = 'rgba(0,191,255,0)';
     else
    element.style.backgroundColor = 'rgba(255,105,180,0)';
  }

//table      
var table = [
"Lyn", "22", "F", 1, 1,
"May", "32", "F", 18, 1,
"Sam", "27", "F", 1, 2,
"Sham", "23", "F", 2, 2,
"Hrs", "22", "M", 13, 2
];

// function calling starts here..

            for ( var i = 0; i < table.length; i += 5 ) {

                var element = document.createElement( 'div' );
                element.className = 'element';

                var number = document.createElement( 'div' );
                number.className = 'number';
                number.textContent = (i/5) + 1;
                element.appendChild( number );

                var symbol = document.createElement( 'div' );
                symbol.className = 'symbol';
                symbol.textContent = table[ i ];
                element.appendChild( symbol );

                var details = document.createElement( 'div' );
                details.className = 'details';
                details.innerHTML = table[ i + 1 ] + '<br>' + table[ i + 2 ];
                element.appendChild( details );

                // element.CheckColour(details);  /*help me check this */
                CheckColour(element, details);
                /*CheckColour function, help me check this too if there is any error*/


                var object = new THREE.CSS3DObject( element );
                object.position.x = Math.random() * 4000 - 2000;
                object.position.y = Math.random() * 4000 - 2000;
                object.position.z = Math.random() * 4000 - 2000;
                scene.add( object );

                objects.push( object );

                //

                var object = new THREE.Object3D();
                object.position.x = ( table[ i + 3 ] * 140 ) - 1330;
                object.position.y = - ( table[ i + 4 ] * 180 ) + 990;

                targets.table.push( object );

            }
功能检查颜色(元素、细节){
如果(详细信息=“M”)
element.style.backgroundColor='rgba(0191255,0)';
其他的
element.style.backgroundColor='rgba(255105180,0)';
}
//桌子
变量表=[
“林”、“22”、“F”、1、1、,
“5月”、“32日”、“F日”、18日、1日、,
“山姆”、“27”、“F”、1、2、,
"Sham,"23,"F,2,2,,
“小时”,“22”,“米”,13,2
];
//函数调用从这里开始。。
对于(变量i=0;i'+表[i+2];
元素。追加子元素(详细信息);
//元素。检查颜色(细节);/*帮我检查一下*/
检查颜色(元素、细节);
/*CheckColor功能,如果有任何错误,请帮助我检查此功能*/
var object=new THREE.CSS3DObject(元素);
object.position.x=Math.random()*4000-2000;
object.position.y=Math.random()*4000-2000;
object.position.z=Math.random()*4000-2000;
场景。添加(对象);
对象。推(对象);
//
var object=new THREE.Object3D();
object.position.x=(表[i+3]*140)-1330;
object.position.y=-(表[i+4]*180)+990;
目标.表格.推送(对象);
}

您正在重新定义函数中的所有变量,使其值
未定义
,这很明显!=
'M'
。除此之外,“它不起作用”这不是一个很好的问题描述。没有任何东西被传递到函数中…嗯,它仍然不会根据细节改变颜色。也许它与css有关。顺便说一句,谢谢你宝贵的建议。我不知道你想做什么,但在你的代码中,
细节
是一个DOM元素。这显然永远不能等于一个字符串
'M'
。也许你想检查
表[i+2]
而不是
详细信息
?然后把它传递给函数:
检查颜色(元素,表[i+2])
。我昨天做了,在条件部分做了一个小的修改,它就工作了。非常感谢你的帮助。