我对javascript的经验不多。
这是我的js代码:
function () {
alert("start");
var svg1 = document.createElementNS("http://www.w3.org/2000/svg", "svg");
svg1.setAttributeNS(null,"id","fillgauge1");
svg1.setAttributeNS(null,"width","97%");
svg1.setAttributeNS(null,"height","250");
svg1.setAttributeNS(null,"onclick","gauge1.update(NewValue());");
document.body.appendChild(svg1);
var gauge1 = loadLiquidFillGauge("fillgauge1", 55);
//other code
}
function loadLiquidFillGauge(elementId, value, config) {
alert("start loadLiquidFillGauge OK");
if(config == null) config = liquidFillGaugeDefaultSettings();
alert(elementId + "<-elementID| value->" + value + "| config--> " + config );
var gauge = d3.select("#" + elementId);
//other code
}
代码在d3.select调用时停止执行。
您是否知道为什么选择方法找不到elementid fillgauge1?
修改
我更新了代码,现在id为fillgauge1的元素svg1 isnt为null。但是select方法会停止执行..
答案 0 :(得分:0)
您需要将SVG元素附加到文档中。您的SVG已创建,但它不存在于页面上,因此d3.select
将无效。在调用loadLiquidFillGauge之前添加以下行。
document.body.appendChild(svg1)
这可能更清楚:
var svg1 = document.createElementNS("http://www.w3.org/2000/svg", "svg");
svg1.setAttributeNS("http://www.w3.org/2000/svg","id","fillgauge1");
svg1.setAttributeNS("http://www.w3.org/2000/svg","width","97%");
svg1.setAttributeNS("http://www.w3.org/2000/svg","height","250");
svg1.setAttributeNS("http://www.w3.org/2000/svg","onclick","gauge1.update(NewValue());");
document.body.appendChild(svg1);
var gauge1 = loadLiquidFillGauge("fillgauge1", 55);