Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.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 如何从jquery替换svg中文本元素的值_Javascript_Jquery_Svg_Svg Edit - Fatal编程技术网

Javascript 如何从jquery替换svg中文本元素的值

Javascript 如何从jquery替换svg中文本元素的值,javascript,jquery,svg,svg-edit,Javascript,Jquery,Svg,Svg Edit,我正在为构建建筑创建一个svg工具,我已经创建了一个房间(使用rect工具)并对它进行了分组,现在我想将该房间的名称放置在rect中,例如:“Office”,这是第一次将文本放置在rect中,但下一次我必须替换文本元素中已经存在的名称。 下面是我的代码 var svgns = 'http://www.w3.org/2000/svg'; var ex_x=70; var ex_y=30; var hidden = parseInt($("#svg_gro

我正在为构建建筑创建一个svg工具,我已经创建了一个房间(使用rect工具)并对它进行了分组,现在我想将该房间的名称放置在rect中,例如:“Office”,这是第一次将文本放置在rect中,但下一次我必须替换文本元素中已经存在的名称。 下面是我的代码

    var svgns = 'http://www.w3.org/2000/svg';     
    var ex_x=70;
    var ex_y=30;

    var hidden = parseInt($("#svg_group_osiz_1").val());    
    var gethide_curtselid=$("#hide_curtselid").val();      
    var gethide_curtselid12=$("#hide_curtdrawx_id").val();     
    var gethide_curtselid13=$("#hide_curtdrawy_id").val();       

    var x=parseInt(gethide_curtselid12) + parseInt(ex_x);  
    var y=parseInt(gethide_curtselid13) + parseInt(ex_y);            

    var text = document.createElementNS(svgns, 'text');  

    text.setAttributeNS(null, 'x', x); 
    text.setAttributeNS(null, 'y', y);           
    text.setAttributeNS(null, 'fill', '#343938');    
    text.setAttributeNS(null, 'text-anchor', 'middle');
    text.textContent =room_name;    

    var html =$( "#"+gethide_curtselid ).html();        

    if(html.contains("</text>"))
    {       
        var start_string=html.indexOf("<text");
        var end_string  =   html.indexOf("</text>");        
        end_string      =   end_string+7;   
        remove_string   =   html.substring(start_string,end_string);        
        var content_replaced = html.replace(remove_string,"");      

        $( "#"+gethide_curtselid ).html(content_replaced);
        var replaced_html =$( "#"+gethide_curtselid ).html();   

    }   

    $( "#"+gethide_curtselid ).append(text);            
var svgns='1〕http://www.w3.org/2000/svg';     
var ex_x=70;
var ex_y=30;
var hidden=parseInt($(“#svg_group_osiz_1”).val();
var gethide_curtselid=$(“#hide_curtselid”).val();
var gethide_curtselid12=$(“#hide_curtselidx_id”).val();
var gethide_curtselid13=$(“#hide_curtselid13”).val();
var x=parseInt(gethide_curtselid12)+parseInt(ex_x);
变量y=parseInt(gethide_curtselid13)+parseInt(ex_y);
var text=document.createElements(svgns,“text”);
setAttributeNS(null,'x',x);
setAttributeNS(null,'y',y);
setAttributeNS(null,'fill','#343938');
setAttributeNS(null,'text-anchor','middle');
text.textContent=房间名称;
var html=$(“#”+gethide_curtselid).html();
if(html.contains(“”)
{       

var start_string=html.indexOf(“尝试设置textNode的id

var text = document.createElementNS(svgns, 'text');  
text.setAttributeNS(null, 'x', x); 
text.setAttributeNS(null, 'y', y);           
text.setAttributeNS(null, 'fill', '#343938');    
text.setAttributeNS(null, 'text-anchor', 'middle');
text.setAttributeNS(null, 'id', 'roomName');
text.textContent =room_name; 
然后,您可以使用类似js的方法来操作它

document.getElementById('roomName').textContent = "new text";

您已经使用了jQuery,请充分利用它

var ex_x=70;
var ex_y=30;

var hidden = parseInt($("#svg_group_osiz_1").val());    
var gethide_curtselid=$("#hide_curtselid").val();      
var gethide_curtselid12=$("#hide_curtdrawx_id").val();     
var gethide_curtselid13=$("#hide_curtdrawy_id").val();       

var x=parseInt(gethide_curtselid12) + parseInt(ex_x);  
var y=parseInt(gethide_curtselid13) + parseInt(ex_y);

// find existing text element
var $parent = $( "#"+gethide_curtselid );
var $text = $parent.find('text');

// if there is no <text>, create a <text> element with fixed value attributes
// and append it to $parent.
if ($text.length == 0) {
   $text = $('<text fill="#343938" text-anchor="middle" />').appendTo($parent);
}

// set attributes and text content.
$text.text( room_name ).attr( {x: x, y: y} );
var ex_x=70;
var ex_y=30;
var hidden=parseInt($(“#svg_group_osiz_1”).val();
var gethide_curtselid=$(“#hide_curtselid”).val();
var gethide_curtselid12=$(“#hide_curtselidx_id”).val();
var gethide_curtselid13=$(“#hide_curtselid13”).val();
var x=parseInt(gethide_curtselid12)+parseInt(ex_x);
变量y=parseInt(gethide_curtselid13)+parseInt(ex_y);
//查找现有文本元素
var$parent=$(“#”+gethide_curtselid);
var$text=$parent.find('text');
//如果没有,则创建具有固定值属性的元素
//并将其附加到$parent。
如果($text.length==0){
$text=$('').appendTo($parent);
}
//设置属性和文本内容。
$text.text(room_name).attr({x:x,y:y});

我怀疑您的Internet Explorer有问题。这是因为当应用于
容器中的
元素时,JQueryhtml()方法返回“undefined”将在Chrome中工作,但不会在Internet Explorer中工作。请改用JQuerytext()方法,它不会返回元素的整个内部HTML,只返回文本,但这对于SVG中的文本来说不应该是问题

<svg width="200px" height="200px">
<text x="50%" y="50%" fill="#AAA">Some text</text>
</svg>
IE11:

这适用于Chrome和IE:

> $("svg text").text()
"Some text" 

这将不起作用。SVG元素的名称空间与HTML不同,您不能使用jQuery来创建它们。
但它确实发送了工作
-但不起作用?(我会用所有大写字母键入
I
,就像
SVG
$("svg text").html()
undefined
> $("svg text").text()
"Some text"