Javascript 无法读取属性';nodeName';SVG文件中未定义的

Javascript 无法读取属性';nodeName';SVG文件中未定义的,javascript,jquery,svg,Javascript,Jquery,Svg,该错误通常由加载页面结束前执行的脚本引起,如下所述: 但我不认为这是我的错误: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg onload="init(evt)" xmlns="http://www.w3.org/2000/svg

该错误通常由加载页面结束前执行的脚本引起,如下所述:

但我不认为这是我的错误:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg onload="init(evt)" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
    <script xlink:href="jquery-1.10.2.min.js"/>
    <script xlink:href="test.js"/>
    <g id="id">

    </g>
</svg>

以及test.js文件:

function init () {
    $(document).mousedown(test)
}

function test (evt) {
    $('#id').append('test');
    $('#id').append('<rect x=10 y=10 width=50 height=50/>');
}
函数初始化(){
$(文档).mousedown(测试)
}
功能测试(evt){
$('#id')。追加('test');
$('#id')。附加('');
}

奇怪的是,第一个附加项起作用,但第二个附加项不起作用。实际上,当存在
时,会引发错误。如果您通过jQuery
$(“”)
方法实例化元素,它会工作

function test (evt) {
  $('#id').append('test');
  $('#id').append($('<rect/>').attr({'x':10,'y':10,'width':50,'height':50}));
}
功能测试(evt){
$('#id')。追加('test');
$('#id').append($('').attr({'x':10,'y':10,'width':50,'height':50}));
}

可能是因为它试图在SVG文档中使用
.innerHTML
,但无法工作。使用
document.createElement(“rect”)
。你能发布你收到的错误的堆栈跟踪吗?