2015-03-20 1 views
0

В этом коде переменная «ссылка» дает «неопределенный». Я не знаю, в чем причина. Это мой код:Переменная в другую переменную, получив «undefined»

HTML, первая попытка:

<html> 
    <head> 
       <meta charset="utf-8" /> 
     <script src="js.js"></script> 
     <script src="http://code.jquery.com/jquery-2.1.1.min.js"></script> 
    </head> 
    <body> 
     <p><a onclick="doSom()">Click here!</a></p> 
    </body> 
</html> 

JavaScript (ж/JQuery), первая попытка:

var link; 
var testing="Testing this <a href=\""+link+"\">variable</a> here."; 
function doSom(){ 
    link="http://www.google.com"; 
    $('p').html(testing); 
} 

HTML, вторая попытка:

<html> 
    <head> 
     <meta charset="utf-8" /> 
     <script src="js.js"></script> 
     <script src="http://code.jquery.com/jquery-2.1.1.min.js"></script> 
    </head> 
    <body> 
     <p><a onclick="doSom('www.google.com.br')">Click here!</a></p> 
    </body> 
</html> 

JavaScript (w/jQuery), вторая попытка:

var link; 
var testando="Testing this <a href=\""+link+"\">variable</a> here."; 
function doSom(link){ 
    $('p').html(testing); 
} 

Переменная «ссылка» не дает своего значения в коде выше, оставаясь «неопределенным».

Это Inicial код, который работает (но я его оптимизации):

HTML с 1-го раза;

JavaScript (ж/JQuery):

var link; 
var testingi="Testing this <a href='"; 
var testingii="'>variable</a> here."; 
function doSom(link){ 
    $('p').html(testingi+link+testingii); 
} 

Я думаю, что это совершенно не нужно, чтобы объявить 2 переменные только одно предложение.

ответ

2

Ваша задача сводится к тому, что вы пытаетесь использования переменной link, прежде чем вы инициализирован Это.

var link; // By default, this is `undefined` 
var testing="Testing this <a href=\""+link+"\">variable</a> here."; 
// Your `testing` link will now contain the string `undefined` 
function doSom(){ 
    link="http://www.google.com"; 
    // Since you don't update `testing` it still has "undefined" in it somewhere 
    $('p').html(testing); 
} 

Решения: ждать, чтобы построить свою testing ссылку, пока вы инициализируетесь своим link переменными.

+0

Насколько глупым я был. Но, видите ли, моя переменная «тестирование» имеет исправление кода, поэтому я пытаюсь ее укоротить. Есть код для обновления переменной без необходимости писать все заново? –

+0

Шаблоны шаблонов ES6 сделают это немного более чистым (но IE не поддерживает их) - '\' Тестирование этого variable здесь. \ '' – brianvaughn

+0

IE не проблема, я показываю сообщение об изменении браузера. : P Спасибо, человек. Закончился целый месяц сомнения. –

1

Вы добавляете ссылку до того, как она имеет значение, поэтому не определено. затем определите строку.

Смотрите здесь:

var link; 
---- this is empty at definition !!! var testing="Testing this <a href=\""+link+"\">variable</a> here."; 
function doSom(){ 
link="http://www.google.com"; 
$('p').html(testing); 
} 

ли это:

var link; 
var testing; 
function doSom(){ 
link="http://www.google.com"; 
testing ="Testing this <a href=\""+link+"\">variable</a> here."; 
$('p').html(testing); 
} 
0

Для вашего кода «tentativa 1» ссылка на причину не определена, так это то, что вы вставили ее в строковый тест, прежде чем назначили значение для ссылки.

Изменить

var link; 
var testing="Testing this <a href=\""+link+"\">variable</a> here."; 
function doSom(){ 
    link="http://www.google.com"; 
    $('p').html(testing); 
} 

в

var link; 
function doSom(){ 
    link="http://www.google.com"; 
var testing="Testing this <a href=\""+link+"\">variable</a> here."; 
    $('p').html(testing); 
} 

и он будет работать.

То же самое со «2-й попыткой». Переместите определение строки для теста (и переименуйте его правильно), и оно должно работать нормально.

Я предполагаю, что «JavaScript (w/jQuery):« работает нормально.

Вы правы, однако вам не нужно определять эти переменные. Это не то, почему он работает правильно в последнем примере. Это потому, что вы ссылаетесь на «ссылку» после того, как она была определена.

Лучший способ сделать это (избежать определений бесполезных переменных и ссылочный «ссылки» после того, как оно было определенно, чтобы изменить назначение HTML выглядеть следующим образом:

link="http://www.google.com"; 
    $('p').html("Testing this <a href=\""+link+"\">variable</a> here."); 

Ваших главным Заберите должны быть, Помещение переменной в строку не поддерживает ссылку на переменную. Значение переменной в момент ее включения в строку является окончательным. Вы не должны включать его в окончательное присвоение строки до тех пор, пока ему не будет присвоено его значение.

Смежные вопросы