Javascript can';无法获取属性值?
我在svg应用程序中使用了svg,并且使用了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 :" +
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);