Javascript can';无法获取属性值?

Javascript can';无法获取属性值?,javascript,knockout.js,svg,Javascript,Knockout.js,Svg,我在svg应用程序中使用了svg,并且使用了knockout,它工作得非常好。但是我正在使用data bind来更改svg text元素的textContent,在我将data bind用于属性之后,我无法使用text.attributes['text'].value来获取该属性的值 编辑: 我的文字是这样的 <text data-bind=\'{style: fill:viewModel.marks()>50?"green":"red"},text: "UserName :" +

我在svg应用程序中使用了svg,并且使用了
knockout
,它工作得非常好。但是我正在使用
data bind
来更改
svg text
元素的textContent,在我将data bind用于属性之后,我无法使用
text.attributes['text'].value来获取该属性的值

编辑:
我的文字是这样的

<text data-bind=\'{style: fill:viewModel.marks()>50?"green":"red"},text: "UserName :" + viewModel.userName()\'></text>

如何在应用绑定之前获取文本属性值

注意:我已找到此链接,但此
ko.contextFor
方法对我无效

任何建议都值得赞赏

问候,

KarthiK.

您不能使用
属性来访问文本值。您可以使用
textContents
属性,例如:

HTML

<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
     <circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="red" />
     <text x="0" y="15" fill="blue" data-bind='text: userName()'></text>
</svg>
<br>
<button data-bind='click: test'>Test</button>

请参阅:

您可能需要在SVG中有某种侦听器(如果可能的话)。SVG可能会被编译,数据绑定会在运行时发生。您可以通过jQuery获得它,如下所示:我忘了提到,我需要在applybinding之前获取文本属性值。您的意思是,在调用ko.applyBindings()之前,您需要
用户名
的值吗?只需使用
viewModel.userName()
即可。请在问题中添加更多示例代码,以便我们能够帮助您。在调用ko.applybinding之前,我需要文本属性的值(不仅仅是用户名,我需要文本属性的整个值,如“userName:Jones”),我刚刚编辑了我的代码。抱歉,但我认为这是不可能的。您将得到的最接近的结果是:。但要解析用户名,您必须评估viewModel。
var viewModel = {
    userName : ko.observable("Jones"),
    test : function() {
        var t = document.getElementsByTagName("text")[0],
            s = t.textContent;
        alert(s);
    }
};

ko.applyBindings(viewModel);