为什么在尝试使用Colfusion中的JavaScript将src属性添加到img标记时出现错误?

时间:2015-07-02 22:48:14

标签: javascript html xml coldfusion

我正在使用ColdFusion连接并从Web服务执行方法。我将返回的xml字符串的内容存储到ColdFusion数组中,然后将ColdFusion数组转换为JavaScript数组,以便我可以填充HTML文档的内容。

尝试将照片添加到名为" agent_photo_list"的无序列表时出现问题。特别是当我调用.setAttribute方法时。它似乎涉及'src'参数。当JavaScript代码不在cfscript tagWriteOutput方法内时,它可以正常运行。我已经研究过这个问题,但我还没有找到足够相似的参考资料。我仍然无法理解我的问题是什么。我在下面提供了我的代码:

cfscript>
    WriteOutput('
    <script language = "JavaScript">
        var #ToScript(array, "jsArray")#
        var agent = jsArray[0];
        document.getElementById("output").innerHTML = agent.firstname + " " + agent.lastname;
        var imgurl = "_images/agentphoto.jpg";
        var node = document.createElement("LI");  
        var imgnode = (document.createElement("IMG"));
        imgnode.setAttribute('src', "imgurl");
        node.appendChild(imgnode);
        document.getElementById("agent_photo_list").appendChild(node);
    </script>
    ')
</cfscript>  

我正在使用位于_images文件夹中的jpg文件进行测试,稍后我会将其更改为agent.photourl

我得到的错误如下:

  

无效的CFML构造在第55行的第35列找到.ColdFusion是   查看以下文字:&lt; p&gt; src&lt; / p&gt;&lt; p&gt; CFML   编译器正在处理:&lt; ul&gt;&lt; li&gt;表达式开头   使用WriteOutput,在第111行,第17列。通常是这条消息   由表达式结构中的问题引起的。&lt; li&gt;脚本   以第111行的列上的WriteOutput开头的语句   17.&lt; li&gt;从第102行第10列开始的cfscript标签。&lt; / ul&gt;包含或处理的特定文件序列为:C:\ inetpub \ wwwroot \ webservice.cfm,line:117

我很好奇为什么我的JavaScript在cfscript标记内有效,直到调用setAttribute方法以及为什么它在cfscript标记之外起作用。

我将非常感谢您的见解。谢谢。

1 个答案:

答案 0 :(得分:3)

您需要在“”中包含 src 。另外,在 WriteOutput 结尾处添加“; ”。以下代码应该适合您。

<cfscript>
    WriteOutput('
    <script language = "JavaScript">
        var #ToScript(array, "jsArray")#
        var agent = jsArray[0];
        document.getElementById("output").innerHTML = agent.firstname + " " + agent.lastname;
        var imgurl = "_images/agentphoto.jpg";
        var node = document.createElement("LI");  
        var imgnode = (document.createElement("IMG"));
        imgnode.setAttribute("src", "imgurl");
        node.appendChild(imgnode);
        document.getElementById("agent_photo_list").appendChild(node);
    </script>
    ');
</cfscript>