2016-02-10 3 views
2

У меня ситуация была я хочу назвать эту же функцию SVG где-то еще, так что я:изменение TextContent из SVG

function second() { 
    one(); 
} 

но в функции второго() я хочу, чтобы изменить одну функцию() TextContent.

function second() { 
    one(); 
    document.querySelector("#textError").textContent = ("new text"); 
} 

Когда я запускаю эту функцию, она работает, но только если я загружаю функцию one() сначала, чтобы создать svg. а затем я могу вызвать функцию second(), чтобы изменить текст. но я хочу сначала вызвать функцию second(). это дает мне:

ошибка консоли: Не удается установить свойство «TextContent» неопределенной или нулевой ссылки

+0

Итак, вы хотите изменить текст чего-то, чего не существует? Это невозможно. Но вы можете передать параметр 'textContent' как' one() '. Он будет похож на 'one (text) {text = text || 'DefaultText'; // ...} ' – Georg

+0

Что такое' svgError'? можете ли вы добавить html? – RRK

ответ

2

Добавить параметр функционировать one.

function one(textContent){ 
    .................... 
    ....................  
    var t = document.createElementNS('http://www.w3.org/2000/svg','text'); 
    t.setAttribute("id", "textError"); 
    t.textContent = textContent?textContent:"hello"; 
    svgError.appendChild(t); 
    .................... 
    .................... 
} 

Теперь отправьте новый текст в качестве параметра one функции от «second` функции.

function second() { 
    one("new text"); 
} 

Edit: Чтобы получить текст из какой-то другой части и передать, код, как показано ниже.

function second() { 
    var newText = this.getText(); 
    one(newText); // one(this.getText()); 
} 
+0

и что, если я хочу передать значение, которое ему нужно получить с другой страницы. например, function second() {one (this.gettText (......);} текст, который он получает, является строкой, но я не хочу вручную вводить его в аргументе. Я хочу, чтобы он извлекал строку –

+0

. в ответ – Gilsha