我有一个网页,其中用数组填充了一个表。它具有doClick函数,因此当用户单击单元格时,它将单元格的行和列传递给该函数。单元格示例:onclick =“ doClick(0,1)”
public class TreeNode
{
public int Id { get; set; }
public int? ParentId { get; set; }
public string Key { get; set; }
public string Name { get; set; }
public string Url { get; set; }
public string Type { get; set; }
public bool HasChildren { get; set; }
public virtual List<TreeNode> Children { get; set; }
public string ParentKey { get; set; }
}
。问题是,即使两个if表达式都为true,if语句也将被跳过,并将其传递给else语句。我已经对它进行了检查,并通过开发人员工具和检查值来运行它。在两个表达式上都为真的语句被跳过。有什么建议吗?
答案 0 :(得分:3)
cells[row][right].innerHTML = ""
是错误的。您缺少双(三重)=
。
正确的方法应该是...
cells[row][right].innerHTML === ""
答案 1 :(得分:0)
看起来您的代码中可能有一些错别字或误解。
有关IF语句中条件的简短说明
像(cells[top][col].innerHTML = "")
这样的条件语句将始终返回true,因为这是将cells[top][col].innerHTML
设置为""
或至少实例化了变量。因此,测试绝对正确或错误的适当条件是(cells[top][col].innerHTML === "")
。但是,您甚至可以不这样做而逃脱,只需将(cells[top][col].innerHTML = "")
替换为cells[top][col].innerHTML
。尽管变量尚未被实例化,但您仍可能遇到其他问题。我将后一种逻辑包装在IF语句中,以检查cells[top][col].innerHTML
是否被实例化。
要解决此问题,请查看我对您的代码进行的以下修改。
function doClick(row, col)
{
var top = row -1;
var bottom = row +1;
var left = col -1;
var right = col +1;
var swapped = false;
if(typeof cells[top][col].innerHTML !== 'undefined' $$ cells[top][col].innerHTML !== null)
{
if ((top != -1) && cells[top][col].innerHTML !== '')
{
cells[top][col].innerHTML = cells[row][col].innerHTML;
cells[row][col].innerHTML = "";
swapped = true;
}
else if ((right != 4) && cells[row][right].innerHTML !== '')
{
cells[row][right].innerHTML = cells[row][col].innerHTML ;
cells[row][col].innerHTML = "";
swapped = true;
}
else if ((bottom != 4) && (cells[bottom][col].innerHTML))
{
cells[bottom][col].innerHTML = cells[row][col].innerHTML;
cells[row][col].innerHTML = "";
swapped = true;
}
else
{
alert("Illegal Move.");
}
}
else if (typeof cells[row][left].inn !== 'undefined' && (left != -1) && cells[row][left].inn !== '')
{
cells[row][lef].innerHTML = cells[row][col].innerHTML;
cells[row][col].innerHTML = "";
swapped = true;
}
else
{
alert("Illegal Move.");
}
}
用于演示上述代码的示例
var testVar1 = '';
var testVar2 = 'Hello';
// var testVar3; <- Left this un-instantiated to test existance
// Testing if a var is empty but exists
if(typeof testVar1 !== 'undefined' && testVar1 !== null){
if(testVar1 !== ''){
alert('testVar1 has a value!');
}{
alert('testVar1 does not have a value!');
}
}
// Testing if a var is empty but exists
if(typeof testVar2 !== 'undefined' && testVar2 !== null){
if(testVar2 !== ''){
if(testVar2 === 'Hello'){
alert('testVar2 has a value! Value: ' + testVar2);
}{
alert('testVar2 has a value but it is not the one we expected.');
}
}{
alert('testVar2 does not have a value!');
}
}
// Test existance
if(typeof testVar3 !== 'undefined' && testVar3 !== null){
alert('testVar3 exists!');
}else{
alert('testVar3 does not exist!');
}