繁体   English   中英

在C#字符串生成器对象中将javascript错误与硬编码的html链接

[英]Linking javascript error with hard-coded html in C# string builder object

这可能是我在研究别人的代码时第一次必须处理javascript错误。 请帮帮我。

当有人提交按钮时,该网络表单应该发送电子邮件。 但是,会触发javascript错误,阻止这样做:

javacript弹出窗口

所以这是我击中是要带我去的地方

页面错误行号

我跟踪并在下面看到了这段代码

问题是:弹出窗口中的“显示”属性是否引用行标签<td>的属性“样式”的值? cellColor初始化为'ffffff',即cellColor =“ ffffff”; 如果cellColor曾经是undefined / null,cellColor是否会导致属性“ display”为undefined / null?

align ='left valign = middle style = background-color:#“ + cellColor +”; 边框:实心1px#000000; \\“>”

(这是我跟踪的代码)

我是公认的JS骇客; JS大师可能有更好的解决方案...

这里的问题是,每当子节点不包含带有显示属性的内联样式时, divHRSupervisors.childNodes[i].style.display != 'none'都会引发未定义的错误。

将工作:

<div style="display: block;">content</div>
- or -
<div style="display: none;">content</div>

不管用:

<div>content</div>

此外,无论何时使用childNodes ,都将包括所有节点,包括文本。 例如...

'Test'div的0个子节点:

<div id="Test"></div>

'Test'div的1个子节点(div内的文本算作一个子节点):

<div id="Test">content</div>

3个用于“测试” div的子节点(1个用于主要文本内容,1个用于内部<div> ,1个用于内部<div>的内容):

<div id="Test">
  content
  <div>child content</div>
</div>

使用当前JS中的条件测试,只要遇到子节点没有内联样式的显示集,就会抛出错误。

一种解决方案是将公共类添加到要检查style.display属性的任何元素,然后检查显示是否设置为none。 类似于以下内容:

var divs = document.getElementById("divHRSupervisors");
var children = divs.childNodes;

for (var i = 0; i < children.length; i++) {
    var child = children[i];
    // someClass is a class applied to all elements you want to verify
    if (child.className == 'someClass') {
        // check to see if there is a display property and if the display
        // property does not equal none.
        if (child.style.display && child.style.display != 'none') {
            alert(child.nodeName);
            // do other stuff.
        }
    }
}

您的HTML将类似于以下内容(请注意someClass的使用):

<div id="divHRSupervisors">
    <div class="someClass">hello</div>
    <div class="someClass" style="display: block;">world</div>
</div>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM