Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么显示隐藏javascript会在cms中引起问题_Javascript_Html - Fatal编程技术网

为什么显示隐藏javascript会在cms中引起问题

为什么显示隐藏javascript会在cms中引起问题,javascript,html,Javascript,Html,代码应该显示或隐藏CMS内部表单上的输入(和其他元素)。但是,有些附件的行为就好像它们被删除了一样,无法处理或发送。如果我不发布几页代码并解释CMS特定代码,您能告诉我关于这段可能导致问题的代码块的情况吗 这就是我将问题缩小到的相关代码 function setShowHide(num, min) { var terminate = false; if (num < 0) // minus { for(x = 4; x > 0; x--)

代码应该显示或隐藏CMS内部表单上的输入(和其他元素)。但是,有些附件的行为就好像它们被删除了一样,无法处理或发送。如果我不发布几页代码并解释CMS特定代码,您能告诉我关于这段可能导致问题的代码块的情况吗

这就是我将问题缩小到的相关代码

function setShowHide(num, min)
{
    var terminate = false;

    if (num < 0) // minus
    {
        for(x = 4; x > 0; x--) 
        {
            if(terminate != true)
            {
                if(showHideArray[x] == 1 && AttArray[x] == 0)
                {
                    hide(x + 1);
                    showHideArray[x] = 0;
                    terminate = true;
                }
            }
        }
    }

    if (num > 0) // plus
    {
        for(x = 0; x < 5; x++) 
        {
            if(terminate != true)
            {
                if(showHideArray[x] == 0)
                {
                    Show(x + 1);
                    showHideArray[x] = 1;
                    terminate = true;
                }
            }    
        }
    }
}

function hide(i) {

    changeObjectVisibility("Attachmenttd" + i, "none");
    changeObjectVisibility("Attachment" + i + "File", "none");
    changeObjectVisibility("Attachment" + i + "Description", "none");
    changeObjectVisibility("Attachment" + i + "If", "none");
}           

function Show(j) {                   
    changeObjectVisibility("Attachmenttd" + j, "inline");
    changeObjectVisibility("Attachment" + j + "File", "inline");
    changeObjectVisibility("Attachment" + j + "Description", "inline");
    changeObjectVisibility("Attachment" + j + "If", "inline");

}

function changeObjectVisibility(objectId, newVisibility) {
    // first get the object's stylesheet
    var styleObject = getStyleObject(objectId);
    // then if we find a stylesheet, set its visibility
    // as requested
    //
    if (styleObject) {
        styleObject.display = newVisibility;
        return true;
    } else {
        return false;
    }
}

function getStyleObject(objectId) {
    // checkW3C DOM, then MSIE 4, then NN 4.
    //
    if (document.getElementById(objectId)) {
        return document.getElementById(objectId).style;
    }
    else if (document.all && document.all(objectId)) {
        return document.all(objectId).style;
    }
    else if (document.layers && document.layers[objectId]) {
        return document.layers[objectId];
    } else {
        return false;
    }
}
函数设置显示隐藏(num,min)
{
var=false;
if(num<0)//减
{
对于(x=4;x>0;x--)
{
如果(终止!=真)
{
if(showHidarray[x]==1&&AttArray[x]==0)
{
隐藏(x+1);
showhidarray[x]=0;
终止=真;
}
}
}
}
如果(num>0)//plus
{
对于(x=0;x<5;x++)
{
如果(终止!=真)
{
if(showHiderRay[x]==0)
{
显示(x+1);
showhidarray[x]=1;
终止=真;
}
}    
}
}
}
函数隐藏(一){
changeObjectVisibility(“附件”+i,“无”);
changeObjectVisibility(“附件”+i+“文件”、“无”);
changeObjectVisibility(“附件”+i+“说明”、“无”);
changeObjectVisibility(“附件”+i+“如果”、“无”);
}           
函数显示(j){
changeObjectVisibility(“附件”+j,“内联”);
changeObjectVisibility(“附件”+j+“文件”、“内联”);
changeObjectVisibility(“附件”+j+“说明”、“内联”);
changeObjectVisibility(“附件”+j+“如果”、“内联”);
}
函数changeObjectVisibility(objectId,newVisibility){
//首先获取对象的样式表
var styleObject=getStyleObject(objectId);
//然后,如果我们找到一个样式表,设置它的可见性
//应要求
//
if(样式对象){
styleObject.display=newVisibility;
返回true;
}否则{
返回false;
}
}
函数getStyleObject(objectId){
//检查W3CDOM,然后检查MSIE4,然后检查NN4。
//
if(document.getElementById(objectId)){
return document.getElementById(objectId).style;
}
else if(document.all&&document.all(objectId)){
返回文档.all(objectId).style;
}
else if(document.layers&&document.layers[objectId]){
返回文档。层[objectId];
}否则{
返回false;
}
}

我可以看到您的代码有几个问题(这可能解释您抱怨的症状,也可能解释不了):

您的两个for循环未在相同的数组元素上运行:

for(x = 4; x > 0; x--)

for(x = 0; x < 5; x++)
另外请注意,您没有声明
x
,因此它将是一个全局性的-如果代码的其他部分也有未声明的
x
,则可能会对代码的其他部分产生负面影响

我不认为它会导致任何问题,但是您不需要
terminate
变量和
if(!terminate)
之类的东西-这就是它的用途

您永远不会使用
min
参数


关于
getStyleObject()
函数,您真的需要支持没有
getElementById()的浏览器吗?或者这是为了允许提供的参数可能是id或名称吗?

这是您的确切代码吗?我看到了很多东西,比如
if(num>0)
,其中
被编码为实体
,而不是
if(num>0)
。如果您的CMS正在输出JavaScript,这可能是您的问题。另一方面,如果这些实体是您从某种HTML代码显示中复制/粘贴此代码的结果,请将其编辑为正确的JavaScript。我格式化了代码并用正确的符号替换了编码的HTML。如果这是不正确的编辑,请将其回滚。下一次,请缩进您的代码,以便人们能够更快速地阅读并帮助您请记住我文章中的那一行——我不会发布几页代码并解释CMS特定的代码——实体是必需的,或者CMS引发系统xml异常。将来我将花时间缩进代码。不,cms不缩进任何代码,事实上,每次我保存它时,它都会经常把它搞砸。Michael,你能解释一下cms输出javascript的更多情况吗,以及它是如何影响我的脚本的@迈克尔·汉克斯想知道答案。我会用你的评论来提高我未来的编码技能。目前,脚本工作正常,直到附件无法在cms中显示或识别为止。是否有任何其他原因会导致cms不显示附件?今天晚些时候我将更新一些已经提到的改进。关于getStyleObject(),我从cms支持的社区获得了这些代码和支持函数。您是说thjis函数用于跨浏览器支持,可以用getElementById()替换,并且在大多数浏览器中仍然有效吗?
for(x = 4; x >= 0; x--)          //    >= 0 rather than > 0