javascript
  • internet-explorer
  • firefox
  • this
  • 2009-03-04 4 views 3 likes 
    3

    Почему Firefox не справляется с этим. Этот код работает в IE.FireFox эта функция

    <%@ Language=VBScript %> 
    <HTML> 
    <HEAD> 
    <META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0"> 
    </HEAD> 
    <script type='text/javascript'> 
    function drvFunc(elem) 
    { 
        var e = elem.name; 
        var d = "document." 
        var f = "frm"; 
        var str = d+"."+f+"."+e+".value;"; 
        alert(eval(str)); 
    } 
    </script> 
    <BODY> 
    <form name=frm method=post> 
    <input type=button name=myButton id=myButton value='MyButton' onclick='drvFunc(this)'> 
    </form> 
    </BODY> 
    </HTML> 
    
    +0

    НЕТ РЕБЯТА, это ошибка в визуализатора StackOverflow в. –

    +0

    Я исправил вопрос, отступая должным образом. Пожалуйста, не голосуйте за этого парня! –

    +0

    Я видел, что произошло именно так? – ryeguy

    ответ

    9

    Проблема заключается в том, что у вас есть два периода, которые сцепляются:

    1. var d = "document."
    2. var str = d+"."+f...

    Ваша результирующая строка будет выглядеть так: "document..frm.myButton.value;"

    Удалить один из периодов и он будет работать.

    +0

    Или еще лучше, используйте: alert (document.frm [elem.name] .value); И избавиться от всего остального в функции ;. –

    +1

    Я согласен ... но это, кажется, учебное упражнение для ОП, поэтому я не предлагал (лучше) альтернативы. ;-) – Cerebrus

    13
    function drvFunc(elem) { 
        alert(elem.value); 
    } 
    

    Вам не нужно злую Eval() для этой функции ...

    +0

    Я бы хотел дать вам +10 голосов за ответ. – some

    1

    Изменить

    var d = "document." 
    

    в

    var d = "document" 
    

    Вы работаете Eval с «документом. .frm "

    1

    Я оригинал автор этого кода. Я не уверен, что правильно сформулировал проблему.

    function drvFunc(elem) 
    { 
        **var e = elem.name;** <-- in firefox, this fails. e is not initialized!! 
        var d = "document." 
    ... 
    } 
    

    На форме я мог бы написать код, как это и она отлично работает в IE ...

    <input type=button name=1stButton id=1stButton onclick='drvFunc(this)'> 
    <input type=button name=2ndButton id=2ndButton onclick='drvFunc(this)'> 
    

    ... тогда drvFunc могли бы сделать это

    function drvFunc(elem) 
    { 
    
    } 
    
    +0

    значения атрибутов цитаты! – SilentGhost

    +0

    и поставить скрипт в более подходящее место, он не может быть дочерним элементом документа – SilentGhost

    +0

    К оригинальному автору: префикс всего кода с 4 пробелами (отметьте код, а затем нажмите кнопку 0101), и он будет отображаться правильно. Если вы посмотрите ниже своего окна редактирования, у вас есть предварительный просмотр того, как он будет выглядеть. Я отредактировал это сообщение для вас. – some

    0

    You нужно поместить кавычки (одиночные или двойные) вокруг атрибутов вашего тега <input>.

    Firefox, вероятно, обработка некотируемые по-разному для атрибута объявления IE: http://www.cs.tut.fi/~jkorpela/qattr.html

    Кроме того, необходимо удалить лишнюю точку в "document." как уже говорили другие, и, вероятно, следует реорганизовать drvFunc удалить eval, а также.

    Следующая работает отлично для меня под Firefox 3:

    <%@ Language=VBScript %> 
    <HTML> 
    <HEAD> 
    <META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0"> 
    <script type='text/javascript'> 
    function drvFunc(elem) 
    { 
        alert(elem.value); 
    } 
    </script> 
    </HEAD> 
    <BODY> 
    <form name="frm" method="post"> 
    <input type="button" name="myButton" id="myButton" value="MyButton" onclick="drvFunc(this)"> 
    </form> 
    </BODY> 
    </HTML> 
    
    1

    вы могли бы также пойти:

    <input type='button' name='2ndButton' id='2ndButton' onclick='drvFunc(this.id)'> 
    
    function drvFunc(elemid){ 
        alert(document.getElementById(elemid).value); 
    } 
    

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

    • Нет связанных вопросов^_^